1 /*
 2 N 为奇数时
 3   (1) 将1放在第一行中间一列;
 4 
 5 
 6   (2) 从2开始直到n×n止各数依次按下列规则存放:
 7 
 8 
 9   按 45°方向行走,如向右上
10 
11 
12   每一个数存放的行比前一个数的行数减1,列数加1
13 
14 
15   (3) 如果行列范围超出矩阵范围,则回绕。
16 
17 
18   例如1在第1行,则2应放在最下一行,列数同样加1;
19 
20 
21   (4) 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,
22 
23 
24   则把下一个数放在上一个数的下面。
25 
26 */
27 #include<stdio.h>
28 int main()
29 {
30     int n,i, j,x,t ;
31     scanf("%d", &t);
32     while(t--)
33     {
34         scanf("%d", &n);
35         int a[100][100] = {0};
36         x = 1;
37         a[1][n/2+1] = 1;
38         i = 1;
39         j = n/2+1;
40         while(x<n*n)
41         {
42             if(i-1 == 0&&j!=n)
43             {
44                 i = n;
45                 j++;
46                 a[i][j] = ++x;
47             }
48             else
49                 if(j+1>n&&i!=1)
50                 {
51                     i--;
52                     j = 1;
53                     a[i][j] = ++x;
54                 }
55             else
56                 if(a[i-1][j+1]!=0||(i == 1&&j == n))
57                 {
58                     i++;
59                     a[i][j] = ++x;
60                 }
61             else
62             {
63                 i--;
64                 j++;
65                 a[i][j] = ++x;
66             }
67         }
68     for(i = 1; i <= n ; i++)
69         for(j = 1 ; j <= n ; j++)
70         {
71             printf("%4d",a[i][j]);
72             if(j == n)
73                 printf("\n");
74         }
75     }
76     
77         return 0;
78 }