//誤読して距離の和を最大化してしまった。(WA) #include #define rep(i, n) for(i = 0; i < n; i++) using namespace std; int n; int ans[300][300]; signed main() { int i, j; cin >> n; int n2 = n / 2; rep(i, n2) { rep(j, n2) { int sft = 2 * n * i + 1; ans[i][j] = sft + 2 * j; } rep(j, n2) { int sft = 2 * n * i + 1 + n; ans[i][n - 1 - j] = sft + 2 * j; } } for (i = n2; i < n; i++) { rep(j, n) { ans[i][j] = ans[n - 1 - i][n - 1 - j] + 1; } } rep(i, n) { rep(j, n) { cout << ans[i][j]; if (j + 1 < n) cout << " "; } cout << endl; } return 0; }