#include using namespace std; #define FOR(i,a,b) for(int i=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define ALL(v) (v).begin(),(v).end() template inline bool chmax(A &a, B b) { if (a inline bool chmin(A &a, B b) { if (a>b) { a=b; return 1; } return 0; } typedef unsigned long long ull; typedef long long ll; typedef pair pii; typedef pair pll; const ll INF = 1ll<<29; const ll MOD = 1000000007; const double EPS = 1e-10; int main() { int n; cin >> n; int ans[30][30]; memset(ans, -1, sizeof(ans)); int x = 0, y = 0, num = 0, d = 0; int dx[4] = {1,0,-1,0}, dy[4] = {0,1,0,-1}; while (true) { if (!(x >= 0 && x < n && y >= 0 && y < n) || ans[y][x] != -1) break; ans[y][x] = ++num; int nx = x + dx[d], ny = y + dy[d]; if (!(nx >= 0 && nx < n && ny >= 0 && ny < n) || ans[ny][nx] != -1) { d = (d + 1) % 4; nx = x + dx[d]; ny = y + dy[d]; } x = nx; y = ny; } REP(i, n) REP(j, n) printf("%03d%c", ans[i][j], j == n - 1 ? '\n' : ' '); return 0; }