#agc024e. [agc024_e]Sequence Growing Hard

[agc024_e]Sequence Growing Hard

問題文

次の条件を満たす数列の組 (A0,A1,...,AN)(A_0,A_1,...,A_N) としてありうるものの個数を MM で割ったあまりを求めてください。

  • 全ての i(0leqileqN)i(0\\leq i\\leq N) に対し、AiA_i11 以上 KK 以下の整数からなる長さ ii の数列である
  • 全ての i(1leqileqN)i(1\\leq i\\leq N) に対し、Ai1A_{i-1}AiA_i の部分列である。すなわち、ある 1leqxileqi1\\leq x_i\\leq i が存在し、AiA_ixix_i 文字目を取り除いてできる数列が Ai1A_{i-1} に一致する
  • 全ての i(1leqileqN)i(1\\leq i\\leq N) に対し、AiA_i は辞書順で Ai1A_{i-1} より大きい

制約

  • 1leqN,Kleq3001 \\leq N,K \\leq 300
  • 2leqMleq1092 \\leq M \\leq 10^9
  • N,K,MN,K,M は整数である

入力

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

NN KK MM

出力

数列の組 (A0,A1,...,AN)(A_0,A_1,...,A_N) としてありうるものの個数を MM で割ったあまりを出力せよ。


入力例 1

2 2 100

出力例 1

5

以下の 55 つの組が条件を満たします。

  • (),(1),(1,1)(),(1),(1,1)
  • (),(1),(1,2)(),(1),(1,2)
  • (),(1),(2,1)(),(1),(2,1)
  • (),(2),(2,1)(),(2),(2,1)
  • (),(2),(2,2)(),(2),(2,2)

入力例 2

4 3 999999999

出力例 2

358

入力例 3

150 150 998244353

出力例 3

186248260