n = int(input())
matrix = [[0]*n for i in range(n)]  #创建一个二维数组并初始化
num = 1  #num是向矩阵中填充的数字
#总共有n行 n列 所以从0开始 到n-1 结束
l = 0     #left 指的是矩阵中还未被填充的最左边的列
r = n-1   #right指的是矩阵中还未被填充的最右边的列
u = 0     #up指的是矩阵中还未被填充的顶行
d = n-1   #down 指的是矩阵中还未被填充的最下面的行
#随着回型矩阵的填充,上下左右未被填充的行都会发生变化, 需要注意
while(num <=n*n ):
    for i in range(l,r+1):
        matrix[u][i] = num   #从左向右填充数据
        num += 1
    u = u + 1  #一行填充完了向下转一行 然后走列
    for j in range(u,d+1):
        matrix[j][r] = num   #从上到下填充数据
        num += 1
    r = r - 1  #一列已经填充完了,之后将列数减一
    for k in range(r,l-1,-1):
        matrix[d][k] = num  #从右到左填充数据
        num+=1
    d = d-1  #向上移动一行
    for a in range(d,u-1,-1):
        matrix[a][l] = num #从下到上填充数据
        num+=1
    l = l + 1

#二维矩阵填充wanbi

for p in range(n):
    for o in range(n):
        print(matrix[p][o],end=' ')
    print('\r')