#include #include #include #include #include int main() { int n; std::cin >> n; std::vector v(n * n, 0); std::vector dirct = {1, n, -1, -n}; int p = 1, pos = n - 1, count = n + 1; double move_cost = n - 0.5; v[0] = 1; for (int i = 0; i < n; i++) { v[i] = i + 1; } while (floor(move_cost) != 0) { for (int i = 0; i < floor(move_cost); i++) { v[pos + dirct[p]] = count; count++; pos += dirct[p]; } p = (p + 1) % 4; move_cost -= 0.5; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%03d", v[i * n + j]); if (j != n - 1) printf(" "); } printf("\n"); } return 0; }