P0017

Sirius II

Sirius II

给定 nn,将所有满足 1≤x,y≤n1\le x,y\le n 的二元组 (x,y)(x,y) 排成一列,要求 (x,y)(x,y) 在 (x,x)(x,x) 与 (y,y)(y,y) 之间,且 (x,x)(x,x) 在 (x+1,x+1)(x+1,x+1) 之前。

对于每一对 1≤i≤n,1≤j≤n21\le i\le n,1\le j\le n^2 求出 (i,i)(i,i) 的下标为 jj 的方案数。

答案对给定的质数 pp 取模。

输入格式

一行,两个整数 n,pn,p。

输出格式

共 nn 行,每行 n2n^2 个整数。第 ii 行的第 jj 个数表示 (i,i)(i,i) 下标为 jj 的方案数。

提示

对于 100%100\% 的数据,1≤n≤40,108<p<1091\le n\le 40,10^8< p< 10^9,保证 pp 为质数。

Subtask 1(5%):n≤5\text{Subtask }1(5\%):n\le 5。

Subtask 2(5%):n≤10\text{Subtask }2(5\%):n\le 10。

Subtask 3(10%):n≤15\text{Subtask }3(10\%):n\le 15。

Subtask 4(10%):n≤20\text{Subtask }4(10\%):n\le 20。

Subtask 5(15%):n≤25\text{Subtask }5(15\%):n\le 25。

Subtask 6(15%):n≤30\text{Subtask }6(15\%):n\le 30。

Subtask 7(20%):n≤35\text{Subtask }7(20\%):n\le 35。

Subtask 8(20%):n≤40\text{Subtask }8(20\%):n\le 40。