#abc249e. [abc249_e]RLE

[abc249_e]RLE

問題文

英小文字のみからなる文字列 XX に対し、以下の手続きによって文字列を得ることを考えます。

  • XX を異なる文字が隣り合っている部分で分割する。
  • 分割した各文字列 YY に対して、YYYY を構成する文字と YY の長さを繋げた文字列に置き換える。
  • 元の順番を保ったまま、置き換えた文字列をすべて繋げる。

例えば、aaabbcccc の場合、aaa,bb,cccc に分けられ、それぞれを a3,b2,c4 に置き換え、その順番のまま繋げることにより a3b2c4 を得ます。また、aaaaaaaaaa の場合、a10 になります。

長さ NN の英小文字のみからなる文字列 SS のうち、上記の手続きによって得られた文字列 TT との長さを比べたとき、TT の方が短いものの個数を PP で割ったあまりを求めてください。

制約

  • 1leNle30001 \\le N \\le 3000
  • 108lePle10910^8 \\le P \\le 10^9
  • N,PN,P は整数
  • PP は素数

入力

入力は以下の形式で標準入力から与えられる。

NN PP

出力

答えを出力せよ。


入力例 1

3 998244353

出力例 1

26

1,2,31,2,3 文字目が全て等しい文字列のみが条件を満たします。

例えば、aaaa3 となり条件を満たしますが、abca1b1c1 となり条件を満たしません。


入力例 2

2 998244353

出力例 2

0

aaa2 のように、長さが等しいものは条件を満たさないことに注意してください。


入力例 3

5 998244353

出力例 3

2626

aaabbaaaaa などが条件を満たします。


入力例 4

3000 924844033

出力例 4

607425699

条件を満たす文字列の個数を PP で割ったあまりを求めてください。