N = int(input()) i, j = 0, -1 ans = [['0'] * (N) for _ in range(N)] vec = [ (0, 1), (1, 0), (0, -1), (-1, 0) ] cur = 0 def tashi(t1, t2): return (t1[0] + t2[0], t1[1] + t2[1]) def check(i, j): return 0 <= i < N and 0 <= j < N for s in range(1, N*N + 1): # str(i).zfill(3) ni, nj = tashi((i, j), vec[cur]) if not check(ni, nj) or ans[ni][nj] != '0': cur += 1 cur %= 4 ni, nj = tashi((i, j), vec[cur]) ans[ni][nj] = str(s).zfill(3) i, j = ni, nj for a in ans: print(*a)