#include<bits/stdc++.h>
using namespace std;
int arr[20][20];
int n;
void doarr(int start, int len, int x) { //初始坐标,宽,要赋的值
while (x <= n * n) {
for (int j = start; j <= start + len - 1; j++) {
arr[start][j] = x++;
}
for (int i = start + 1; i <= start + len - 1; i++) {
arr[i][start + len - 1] = x++;
}
for (int j = start + len - 1 - 1; j >= start; j--) {
arr[start + len - 1][j] = x++;
}
for (int i = start + len - 1 - 1; i > start; i--) {
arr[i][start] = x++;
}
return doarr(start + 1, len - 2, x);
}
}
int main() {
cin >> n;
doarr(1, n, 1);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
printf("%d", arr[i][j]);
if (j < n)printf(" ");
}
printf("\n");
}
return 0;
}