//#include <stdio.h>
//int main() {
// int map[11] = {0};
// int f[11][11] = {0};
// int i,j,s=0;
// for(i=1; i<=10; i++) {
// for(j=1; j<=10; j++) {
// scanf("%d", &f[i][j]);
// }
// }
// for(i=1; i<=10; i++) {
// scanf("%d", &map[i]);
// }
// for(i=1; i<=10; i++) {
// for(j=10; j>=1; j--) {
// if(map[i]==1) {
// if(f[i][j]>0) {
// printf("%d crash\n", i);
// s=1;
// break;
// }
// else if(f[i][j]<0) {
// printf("%d fall\n", i);
// s=1;
// break;
// }
// }
// else if(map[i]==0) {
// continue;
// }
// if(s==0) {
// printf("%d safe\n", i);
// s=0;
// }
// }
// }
// return 0;
//}
//#include <stdio.h>
//int main() {
// int map[11] = {0};
// int f[11][11] = {0};
// int i,j,s=0;
// for(i=1; i<=10; i++) {
// for(j=1; j<=10; j++) {
// scanf("%d", &f[j][i]);
// }
// }
// for(i=1; i<=10; i++) {
// scanf("%d", &map[i]);
// }
// for(i=1; i<=10; i++) {
// if(map[i]==1) {
// s=0;
// for(j=10; j>=1; j--) {
// if(f[i][j]>0) {
// printf("%d crash\n", i);
// s=1;
// break;
// }
// else if(f[i][j]<0) {
// printf("%d fall\n", i);
// s=1;
// break;
// }
// }
// switch(s) {
// case 1:
// continue;
// case 0:
// printf("%d safe\n", i);
// }
// }
// }
// return 0;
//}
#include <stdio.h>
int main() {
int i,j,n;
int t, x, y, k = 1;
int map[50][50] = {0};
scanf("%d", &n);
t = (n+1)/2;
x = t;
y = 0;
map[x][y] = k++;
for(i=1; i<=n; i++) {
for(j=t; j<=t+n; j++) {
++map[i][j];
if(map[i][j]%n==0) {
//행만 증가
}
}
}
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++) {
printf("%d ", map[i][j]);
}
printf("\n");
}
}