#agc055f. [agc055_f]Creative Splitting

[agc055_f]Creative Splitting

問題文

整数 N,KN, K が与えられます。

長さ KK の整数列 a=a1,a2,ldots,aKa_1, a_2, \\ldots, a_K が全ての 1leileK1 \\le i \\le K について 1leailei1 \\le a_i \\le i を満たすとき、aa良い列と呼びます。

長さ NKNK の整数列 b=b1,b2,ldots,bNKb_1, b_2, \\ldots, b_{NK} が次の条件を満たすとき、bb素晴らしい列と呼びます: bbNN 個の長さ KK の(連続とは限らない)部分列に分解する方法であって、各部分列が良い列であるような方法が存在する。

f(pos,val)f(pos, val) を、bpos=valb_{pos}=val であるような素晴らしい列 bb の個数と定義します。

全ての 1leposleNK1\\le pos \\le NK, 1levalleK1 \\le val \\le K について f(pos,val)f(pos, val) を求めてください。これらの数値は非常に大きい可能性があるため、これらを素数 PP で割った余りを出力してください。

制約

  • 1leNle201 \\le N \\le 20
  • 1leKle201 \\le K \\le 20
  • 108lePle10910^8 \\le P \\le 10^9
  • PP は素数である。

入力

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

NN KK PP

出力

NKNK 行出力せよ。ii 行目の jj 個目の数値が (f(i,j)bmodP)(f(i, j) \\bmod P) となるようにすること。


入力例 1

2 2 965166677

出力例 1

6 0 
4 2 
4 2 
3 3 

以下の 66 個の素晴らしい列が存在します。

  • 1,1,1,11, 1, 1, 1: b1,b2b_1, b_2, b3,b4b_3, b_4 に分割できます。
  • 1,1,1,21, 1, 1, 2: b1,b2b_1, b_2, b3,b4b_3, b_4 に分割できます。
  • 1,2,1,11, 2, 1, 1: b1,b2b_1, b_2, b3,b4b_3, b_4 に分割できます。
  • 1,2,1,21, 2, 1, 2: b1,b2b_1, b_2, b3,b4b_3, b_4 に分割できます。
  • 1,1,2,11, 1, 2, 1: b1,b3b_1, b_3, b2,b4b_2, b_4 に分割できます。
  • 1,1,2,21, 1, 2, 2: b1,b3b_1, b_3, b2,b4b_2, b_4 に分割できます。