#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const double PI = 3.14159265358979323846; const double EPS = 1e-12; const int INF = 1<<25; typedef pair P; typedef long long ll; typedef unsigned long long ull; #define N 22 int a[N][N], b[N][N], c[N][N]; int d[3][4][4] = { {{4, 1}, {2, 3}}, {{1, 4}, {2, 3}}, {{1, 4}, {3, 2}}}; void mk(int a[N][N], int n){ if(n&1){ int m = n/2; int pa = 0, pb = m; for(int i = 1; i <= n*n; i++){ a[pa][pb] = i; pa = (pa-1+n)%n; pb = (pb+1)%n; if(a[pa][pb]){ pa = (pa+2)%n; pb = (pb-1+n)%n; } } return; } if(n%4 == 0){ for(int i = 1; i <= n*n; i++){ int x = (i-1)/n, y = (i-1)%n; if(!((x%4==0||x%4==3)^(y%4==0||y%4==3))) a[x][y] = i; else a[x][y] = n*n-i+1; } return; } if(n%4 == 2){ int m = n/2; mk(b, m); for(int i = 0; i < m; i++) for(int j = 0; j < m; j++) b[i][j] = 4*(b[i][j]-1); for(int i = 0; i < m; i++) for(int j = 0; j < m; j++) c[i][j] = (i<=m/2?0:(i==m/2+1?1:2)); swap(c[m/2][m/2], c[m/2+1][m/2]); for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ int x = i/2, y = j/2; int x2 = i%2, y2 = j%2; a[i][j] = b[x][y] + d[c[x][y]][x2][y2]; } } return; } } int main(){ int n; cin>>n; mk(a, n); for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++) cout<