U652406 [YCU Cup] Aerhuo 的特训
题目背景
**Aerhuo**是 YCU 算法队的卷王。为了备战 XCPC,他给刚入队的 **威汉森** 布置了一道关于矩阵构造的思维题。威汉森一看题目就晕了,你能帮帮他吗?
题目描述
你需要构造一个 $n \times n$ 的网格,并将整数 $1$ 到 $n^2$(每个数恰好出现一次)填入其中。
我们定义一个网格的 **“训练强度”** 为:**该网格所有可能的子矩形内的数字之和的总和**。
用数学公式描述,若网格为 $A$,则训练强度 $S$ 定义为:
$$ S = \sum_{r_1=1}^{n} \sum_{c_1=1}^{n} \sum_{r_2=r_1}^{n} \sum_{c_2=c_1}^{n} \left( \sum_{i=r_1}^{r_2} \sum_{j=c_1}^{c_2} A_{i,j} \right) $$
(即:枚举所有左上角 $(r_1, c_1)$ 和右下角 $(r_2, c_2)$ 确定的子矩形,计算子矩形内所有元素之和,再将这些和累加起来)。
**目标**:
1. 构造一个网格,使得其 **“训练强度” 最大**。
2. 在满足强度最大的前提下,构造出的网格必须是 **字典序最小** 的。
**关于网格字典序**:
将网格按行优先顺序展开成一个长度为 $n^2$ 的序列(即第一行 $1 \dots n$,然后第二行 $1 \dots n \dots$)。
比较两个网格时,找出它们第一个数字不同的位置,该位置数字较小的网格字典序更小。
**本题包含多组测试数据。**
输入格式
第一行包含一个整数 $T$ ($1 \le T \le 10$),表示测试数据的组数。
接下来 $T$ 行,每行包含一个整数 $n$,表示网格的大小。
输出格式
对于每组测试数据,输出 $n$ 行,每行 $n$ 个整数,表示你构造的 $n \times n$ 网格。
相邻整数之间用空格分隔。
说明/提示
## 数据范围
对于 $100\%$ 的数据, $1 \le T \le 10$, $1 \le n \le 500$,且单测试点数据的 $n^2$ 之和 $\sum n^2 \le 2.5 \cdot 10^5$。