#include using namespace std; using ll = long long; int N; int safe_mod(int v){ v %= N; if(v < 0)v += N; return v; } int main(){ cin >> N; vector> A(N, vector(N)); int cnt = 1; if(N & 1){ for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ A[safe_mod(2 * i - j)][safe_mod(N / 2 - i + j)] = cnt++; } } }else if(N % 4 == 0){ vector> B = {{1,0,0,1},{0,1,1,0},{0,1,1,0},{1,0,0,1}}; for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ A[i][j] = (B[i % 4][j % 4] ? i * N + j + 1: N * N - (i * N + j)); } } }else{ N /= 2; vector> B(N, vector(N)); cnt--; for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ B[safe_mod(2 * i - j)][safe_mod(N / 2 - i + j)] = 4 * cnt++; } } N *= 2; vector>> L = {{{4, 1}, {2, 3}}, {{1, 4}, {2, 3}}, {{1, 4}, {3, 2}}}; int c; for(int i = 0; i < N / 2; i++){ for(int j = 0; j < N / 2; j++){ if(i == N / 4 && j == N / 4)c = 1; else if(i == N / 4 + 1 && j == N / 4)c = 0; else c = (i <= N / 4 ? 0 : (i == N / 4 + 1 ? 1 : 2)); for(int k = 0; k < 2; k++){ for(int l = 0; l < 2; l++){ A[2 * i + k][2 * j + l] = B[i][j] + L[c][k][l]; } } } } } for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ if(j)cout << " "; cout << A[i][j]; } cout << '\n'; } }