E - Sequence Growing Hard 解説 /

実行時間制限: 2 sec / メモリ制限: 1024 MB

配点 : 1200

問題文

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

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

制約

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

入力

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

N K M

出力

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


入力例 1

2 2 100

出力例 1

5

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

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

入力例 2

4 3 999999999

出力例 2

358

入力例 3

150 150 998244353

出力例 3

186248260

Score : 1200 points

Problem Statement

Find the number of the possible tuples of sequences (A_0,A_1,...,A_N) that satisfy all of the following conditions, modulo M:

  • For every i (0\leq i\leq N), A_i is a sequence of length i consisting of integers between 1 and K (inclusive);
  • For every i (1\leq i\leq N), A_{i-1} is a subsequence of A_i, that is, there exists 1\leq x_i\leq i such that the removal of the x_i-th element of A_i would result in a sequence equal to A_{i-1};
  • For every i (1\leq i\leq N), A_i is lexicographically larger than A_{i-1}.

Constraints

  • 1 \leq N,K \leq 300
  • 2 \leq M \leq 10^9
  • N, K and M are integers.

Input

Input is given from Standard Input in the following format:

N K M

Output

Print the number of the possible tuples of sequences (A_0,A_1,...,A_N), modulo M.


Sample Input 1

2 2 100

Sample Output 1

5

Five tuples below satisfy the conditions:

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

Sample Input 2

4 3 999999999

Sample Output 2

358

Sample Input 3

150 150 998244353

Sample Output 3

186248260