#agc052c. [agc052_c]Nondivisible Prefix Sums

[agc052_c]Nondivisible Prefix Sums

問題文

素数 PP が与えられます。これはあなたの嫌いな数です。

整数の列 A1,A2,dots,ANA_1, A_2, \\dots, A_N について、どの接頭辞の和も PP で割り切れないように要素を並べ替えることができるとき、この列を 良い 列と呼びます(すなわち、並べ替えのあと、1leileN1 \\le i \\le N かつ A1+A2+dots+Aiequiv0bmodPA_1 + A_2 + \\dots + A_i \\equiv 0 \\bmod P であるような ii存在してはいけません)。

各要素が 11 以上 P1P-1 以下であるような長さ NN の整数列は全部で (P1)N(P-1)^N 通りありますが、このうち 良い 列はいくつでしょうか。

答えは非常に大きい可能性があるため、これを 998244353998244353 で割った余りを出力してください。

制約

  • 1leNle50001 \\le N \\le 5000
  • 2lePle1082 \\le P \\le 10^8
  • PP は素数である。

入力

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

NN PP

出力

良い 列の個数を 998244353998244353 で割った余りを出力せよ。


入力例 1

2 5

出力例 1

12

良い列は \[1, 1\], \[1, 2\], \[1, 3\], \[2, 1\], \[2, 2\], \[2, 4\], \[3, 1\], \[3, 3\], \[3, 4\], \[4, 2\], \[4, 3\], \[4, 4\]1212 通りです。


入力例 2

4 3

出力例 2

8

良い列は \[1, 1, 1, 2\], \[1, 1, 2, 1\], \[1, 2, 1, 1\], \[2, 1, 1, 1\], \[2,2,2,1\[2, 2, 2, 1], \[2, 2, 1, 2\], \[2, 1, 2, 2\], \[1, 2, 2, 2\]88 通りです。


入力例 3

5000 99999989

出力例 3

51699346

入力例 4

2021 307

出力例 4

644635349