#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;
}