#include <stdlib.h>
#include <string.h>
int searchRow(int n,int arr[n][n],int K)
{
for(int i=0;i<n;i++)
{
if(arr[0][i]==K)
{
return 1;
}
}
return 0;
}
int searchCol(int n,int arr[n][n],int K)
{
for(int i=0;i<n;i++)
{
if(arr[i][n-1]==K)
{
return 1;
}
}
return 0;
}
int main()
{
int n;
scanf("%d",&n);
int arr[n][n];
memset(arr,0,sizeof(arr));
int K;
int col=(n-1)/2;
int row=0;
arr[row][col]=1;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
for(K=2;K<=n*n;K++)
{
if(searchRow(n,arr,K-1)==1&&searchCol(n,arr,K-1)==0)
{
col++;
row=n-1;
arr[row][col]=K;
}
if(searchRow(n,arr,K-1)==0&&searchCol(n,arr,K-1)==1)
{
row--;
col=0;
arr[row][col]=K;
}
if(searchRow(n,arr,K-1)==1&&searchCol(n,arr,K-1)==1)
{
row++;
arr[row][col]=K;
}
if(searchRow(n,arr,K-1)==0&&searchCol(n,arr,K-1)==0&&arr[row-1][col+1]==0)
{
row--;
col++;
arr[row][col]=K;
}
if(searchRow(n,arr,K-1)==0&&searchCol(n,arr,K-1)==0&&arr[row-1][col+1]!=0)
{
row++;
arr[row][col]=K;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}