m = int(input()) n = m * m a = [[0] * m for i in range(m)] cur = 1 yoko = m tate = m x = 0 y = 0 while True: # 左から右 for i in range(yoko): a[y][x] = cur x += 1 cur += 1 tate -= 1 x -= 1 y += 1 if cur == n+1: break # 上から下 for i in range(tate): a[y][x] = cur y += 1 cur += 1 yoko -= 1 y -= 1 x -= 1 if cur == n+1: break # 右から左 for i in range(yoko): a[y][x] = cur x -= 1 cur += 1 tate -= 1 x += 1 y -= 1 if cur == n+1: break # 下から上 for i in range(tate): a[y][x] = cur y -= 1 cur += 1 yoko -= 1 y += 1 x += 1 if cur == n+1: break res = [] for i in range(m): for j in range(m): str_number = str(a[i][j]) if len(str_number) == 1: res.append('00' + str_number) elif len(str_number) == 2: res.append('0' + str_number) else: res.append(str_number) for i in range(n): if i != 0 and i % m == 0: print() if i % m == m-1: print(res[i], end='') else: print(res[i] + ' ', end='')