N = int(input()) a = [[0 for _ in range(N)] for _ in range(N) ] b = [[x1, x2] for x1, x2 in zip(range(N), reversed(range(N)))] yyy = sum(b, [])[:N] xxx = sum(reversed(b), [])[:N] xy = [] for i in range(N): xy.append([xxx[i], yyy[i]]) if i == N-1: break xy.append([xxx[i], yyy[i+1]]) x = 0 y = 0 v = 1 for x_, y_ in xy: if x == x_: yy = list(range(y, y_+1)) if y <= y_ else reversed(list(range(y_, y+1))) for y__ in yy: if a[y__][x] == 0: a[y__][x] = v y = y__ v = v+1 elif y == y_: xx = list(range(x, x_+1)) if x <= x_ else reversed(list(range(x_, x+1))) for x__ in xx: if a[y][x__] == 0: a[y][x__] = v x = x__ v = v+1 for r in a: z = [str(n).zfill(3) for n in r] print(' '.join(z))