2
3
4
#1
1 2 3
8 9 4
7 6 5
#2
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
# 1954. 달팽이 숫자
# 테스트 케이스의 개수 T
T = int(input())
# 움직이는 방향 순서
dr = [0, 1, 0, -1]
dc = [1, 0, -1, 0]
# 달팽이 만드는 함수
def snail(array):
# 움직이는 방향 index
k = 0
# 시작 좌표
cur_r = 0
cur_c = 0
# 초기화
num = 0
# 생성이 끝날 때 까지 반복
while True:
# 0일 때 생성
if array[cur_r][cur_c] == 0:
num += 1
array[cur_r][cur_c] = num
# 종료
if num == N * N:
break
cur_r += dr[k]
cur_c += dc[k]
# 주어진 범위 안에 있을 때, 계속
if 0 <= cur_r <= N-1 and 0 <= cur_c <= N-1:
continue
# 범위를 벗어나면 끝에 도달했으므로 방향 전환
else:
cur_r -= dr[k]
cur_c -= dc[k]
k += 1
if k > 3:
k = 0
cur_r += dr[k]
cur_c += dc[k]
# 0이 아닐 때
else:
cur_r -= dr[k]
cur_c -= dc[k]
# 방향을 바꾼다.
k += 1
if k > 3:
k = 0
cur_r += dr[k]
cur_c += dc[k]
# 각 테스트케이스
for t in range(1, T+1):
N = int(input())
# N x N 2차원 리스트를 만든다.
grid = [[0] * N for _ in range(N)]
# 달팽이 생성
snail(grid)
print("#{}".format(t))
for i in range(N):
print(*grid[i])