AT_abc249_e [ABC249E] RLE
Description
[problemUrl]: https://atcoder.jp/contests/abc249/tasks/abc249_e
英小文字のみからなる文字列 $ X $ に対し、以下の手続きによって文字列を得ることを考えます。
- $ X $ を異なる文字が隣り合っている部分で分割する。
- 分割した各文字列 $ Y $ に対して、$ Y $ を $ Y $ を構成する文字と $ Y $ の長さを繋げた文字列に置き換える。
- 元の順番を保ったまま、置き換えた文字列をすべて繋げる。
例えば、`aaabbcccc` の場合、`aaa`,`bb`,`cccc` に分けられ、それぞれを `a3`,`b2`,`c4` に置き換え、その順番のまま繋げることにより `a3b2c4` を得ます。また、`aaaaaaaaaa` の場合、`a10` になります。
長さ $ N $ の英小文字のみからなる文字列 $ S $ のうち、上記の手続きによって得られた文字列 $ T $ との長さを比べたとき、$ T $ の方が短いものの個数を $ P $ で割ったあまりを求めてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ P $
Output Format
答えを出力せよ。
Explanation/Hint
### 制約
- $ 1\ \le\ N\ \le\ 3000 $
- $ 10^8\ \le\ P\ \le\ 10^9 $
- $ N,P $ は整数
- $ P $ は素数
### Sample Explanation 1
$ 1,2,3 $ 文字目が全て等しい文字列のみが条件を満たします。 例えば、`aaa` は `a3` となり条件を満たしますが、`abc` は `a1b1c1` となり条件を満たしません。
### Sample Explanation 2
`aa` → `a2` のように、長さが等しいものは条件を満たさないことに注意してください。
### Sample Explanation 3
`aaabb` や `aaaaa` などが条件を満たします。
### Sample Explanation 4
条件を満たす文字列の個数を $ P $ で割ったあまりを求めてください。