#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main(){
int i,j,n,m,a[20][20],vis[20][20],ans;
scanf("%d",&m);
while(m--){
scanf("%d",&n);
memset(a,0,sizeof(a));
memset(vis,0,sizeof(vis));
i=1;j=(n+1)/2;
ans=1;
while(ans<=n*n){
a[i][j]=ans;
vis[i][j]=1;
//第一行不是最后一列
if(i==1&&j!=n){
i=n;//最后一行
j=j+1; //后面一列
}
//最后一列但不是第一行
else if(j==n&&i!=1){
i=i-1;
j=1;//上一行第一列
}
//更新右上角的值
else if(j!=n&&!vis[i-1][j+1]){
i=i-1;
j=j+1; //右上角
}
//右上角已更新
else if(i!=n&&j!=n&&vis[i-1][j+1]){
i=i+1; //跳到同列下一行
}
//最右上角
else if(i==1&&j==n)
i=i+1; //跳到同列下一行
ans++;
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
return 0;
}