# 방향 설정 (우하좌상)
dr = [0, 1, 0, -1]
dc = [1, 0, -1, 0]
T = int(input())
for t in range(1, T+1):
N = int(input())
maps = [[0] * N for _ in range(N)]
# 초기 위치와 회전의 방향 설정
r, c = 0, 0
dist = 0 # 우 : 0, 하 : 1, 좌 : 2, 상 : 3
for n in range(1, N * N + 1):
maps[r][c] = n
r += dr[dist]
c += dc[dist]
# 0보다 작거나 N-1보다 크거나, 이미 값이 들어있는 경우(지나간 경우)
if r < 0 or c < 0 or r > N - 1 or c > N - 1 or maps[r][c] != 0:
# 기존 방향으로 진행 취소
r -= dr[dist]
c -= dc[dist]
# 방향 전환
dist = (dist + 1) % 4 # 0 ~ 3사이의 값
# 새로운 방향으로 진행
r += dr[dist]
c += dc[dist]
print(f"#{t}")
for row in maps:
print(*row) # row 단위로 값을 가져옴