#include <stdio.h>
#include <memory.h>
int main(){
	int n;
	scanf("%d",&n);
	int i, c = 0, r = 0,num = 0,cnt = n/2;
	int a[n][n];
	memset(a,0,sizeof(a));	//初始化
	while(cnt--){
	for (i=r; i<n-c; i++)    //→
		a[r][i] = ++num;
	r++;
	for (i=r; i<n-c; i++)    //↓
		a[i][n-c-1] = ++num;
	c++;
	for (i=c-1; i<n-c; i++)    //←
		a[n-r][n-i-2] = ++num;
	for (i=r; i<n-r; i++)        //↑
		a[n-1-i][c-1] = ++num;
}	
	if(n%2!=0)            //如果是奇数,填上正中间那个数
		a[n/2][n/2] = ++num;
	for (int i =0; i<n; i++){  //遍历输出
		for (int j =0; j<n; j++)
			printf("%3d",a[i][j]);
	printf("\n");
	}
return 0;
}

/**************************************************************
	Problem: 1208
	User: admin
	Language: C
	Result: Accepted
	Time:10 ms
	Memory:1144 kb
****************************************************************/