from collections import deque dxy = [(0,1), (1,0), (0,-1), (-1,0)] N = int(input()) visited = [[False]*N for i in range(N)] visited[0][0] = True L = [[""]*N for i in range(N)] L[0][0] = "001" c = 1 q = deque([(0,0)]) while len(q) : y,x = q.popleft() c += 1 for dy,dx in dxy : ny,nx = y+dy,x+dx if ny<0 or ny>=N or nx<0 or nx>=N : continue if visited[ny][nx] : continue visited[ny][nx] = True L[ny][nx] = str(c).zfill(3) q.append((ny,nx)) break for i in range(N) : print(*L[i])