#CF2101A. 网格中的梅克斯

网格中的梅克斯

A. 网格中的 MEX
每个测试的时间限制:22
内存限制:256256 兆字节

你手里有 n2n^2 张卡片,上面的数值分别为 00n21n^2 - 1
你需要将这些卡片放入一个 n×nn \times n 的网格中,每个格子恰好放一张卡片。

对于一个子网格,定义它的 MEX(最小排除值) 为没有出现在该子网格中的最小非负整数。

你的任务是摆放卡片,使得所有子网格的 MEX 之和最大。
子网格的总数为 (n(n+1)2)2\left(\frac{n(n+1)}{2}\right)^2


子网格的定义
一个 n×nn \times n 网格中的子网格由四个整数 l1,r1,l2,r2l_1, r_1, l_2, r_2 确定,满足:
1l1r1n1 \le l_1 \le r_1 \le n1l2r2n1 \le l_2 \le r_2 \le n
网格中第 ii 行第 jj 列的元素属于该子网格当且仅当 l1ir1l_1 \le i \le r_1l2jr2l_2 \le j \le r_2


输入格式
第一行一个整数 tt1t1001 \le t \le 100),表示测试数据组数。
每组数据第一行一个整数 nn1n5001 \le n \le 500),表示网格边长。
保证所有测试数据的 nn 之和不超过 10001000


输出格式
对于每组数据,输出 nn 行,每行 nn 个整数,表示网格的填法。
如果存在多种答案,输出任意一种即可。


示例

输入:

2
2
3

输出:

0 1 
2 3 
8 4 5 
6 0 1 
7 2 3

说明
在第一个测试数据中,一种有效的排列是:

010 \quad 1
232 \quad 3

总共有 99 个子网格,其中 44 个具有非零 MEX,如下所示:

  • 子网格:[0][0](值:[0][0]) — MEX:11
  • 子网格:[0,1][0, 1](值:[0,1][0, 1]) — MEX:22
  • 子网格:[02]\begin{bmatrix} 0 \\ 2 \end{bmatrix}(值:[0,2][0, 2]) — MEX:11
  • 子网格:[0123]\begin{bmatrix} 0 & 1 \\ 2 & 3 \end{bmatrix}(值:[0,1,2,3][0, 1, 2, 3]) — MEX:44

所有子网格的 MEX 之和为 1+2+1+4=81 + 2 + 1 + 4 = 8
可以证明,没有其他排列能得到更大的 MEX 总和。