def solve(N): uzu = [[0] * N for i in range(N)] r, c = 0, 0 drdc = [(0,1), (1,0),(0,-1),(-1,0)] d = 0 for i in range(1, N * N + 1): uzu[r][c] = zero3str(i) d = next_d(d, r, c, drdc, N, uzu) dr, dc = drdc[d] r += dr c += dc for row in uzu: print(' '.join(row)) def zero3str(i): str_i = str(i) k = 3 - len(str_i) res = '0' * k + str_i return res def next_d(d, r, c, drdc, N, uzu): dr, dc = drdc[d] nr = r + dr nc = c + dc if nr >= N or nr < 0 or nc >= N or nc < 0: return (d + 1) % 4 if uzu[nr][nc] != 0: return (d + 1) % 4 return d N = int(input()) solve(N)