//Author : pakhandi
//
using namespace std;
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<iterator>
#include<sstream>
#include<fstream>
#include<cassert>
#include<climits>
#include<cstdlib>
#include<string>
#include<vector>
#include<queue>
#include<deque>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#define wl(n) while(n--)
#define fl(i,a,b) for(i=a; i<b; i++)
#define rev(i,a,b) for(i=a; i>=b; i--)
#define scan(n) scanf("%d", &n)
#define scans(s) scanf("%s", s)
#define scanc(c) scanf("%c", &c)
#define scanp(f) scanf("%f", &f)
#define scanll(l) scanf("%lld", &l)
#define scanllu(u) scanf("%llu", &u)
#define print(n) printf("%d\n", n)
#define prints(s) printf("%s\n", s)
#define printc(c) printf("%c\n", c)
#define printp(f) printf("%f\n", f)
#define printll(l) printf("%lld\n", l)
#define printllu(u) printf("%llu\n", u)
#define nline printf("\n")
#define mclr(strn) strn.clear()
#define ignr cin.ignore()
#define MOD 1000000007
#define ll long long int
#define u64 unsigned long long int
int mat[1005][1005];
void foo(int n)
{
ll sqr=n*n;
int i=0, j=0;
fl(i,0,n+1)
fl(j,0,n+1)
mat[i][j]=0;
int limit=1;
i=0; j=0;
while(limit<=sqr)
{
while(mat[i][j]==0 && j<n && limit<=sqr)
{
mat[i][j]=limit;
limit++; j++;
}
i++; j--;
while(mat[i][j]==0 && i<n && limit<=sqr)
{
mat[i][j]=limit;
limit++; i++;
}
i--; j--;
while(mat[i][j]==0 && j>=0 && limit<=sqr)
{
mat[i][j]=limit;
limit++; j--;
}
j++; i--;
while(mat[i][j]==0 && i>=0 && limit<=sqr)
{
mat[i][j]=limit;
limit++; i--;
}
i++; j++;
}
}
int main()
{
int i, j, cases, k=1;
int n;
scan(n);
foo(n);
fl(i,0,n)
{
fl(j,0,n)
printf("%d\t", mat[i][j]);
nline;
}
return 0;
}
Ly9BdXRob3IgOiBwYWtoYW5kaQovLwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8Y3N0ZGxpYj4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8Y3N0cmluZz4KI2luY2x1ZGU8aXRlcmF0b3I+CiNpbmNsdWRlPHNzdHJlYW0+CiNpbmNsdWRlPGZzdHJlYW0+CiNpbmNsdWRlPGNhc3NlcnQ+CiNpbmNsdWRlPGNsaW1pdHM+CiNpbmNsdWRlPGNzdGRsaWI+CiNpbmNsdWRlPHN0cmluZz4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxxdWV1ZT4KI2luY2x1ZGU8ZGVxdWU+CiNpbmNsdWRlPHN0YWNrPgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPHNldD4KI2luY2x1ZGU8Yml0c2V0PgoKI2RlZmluZSB3bChuKSB3aGlsZShuLS0pCiNkZWZpbmUgZmwoaSxhLGIpIGZvcihpPWE7IGk8YjsgaSsrKQojZGVmaW5lIHJldihpLGEsYikgZm9yKGk9YTsgaT49YjsgaS0tKQojZGVmaW5lIHNjYW4obikgc2NhbmYoIiVkIiwgJm4pCiNkZWZpbmUgc2NhbnMocykgc2NhbmYoIiVzIiwgcykKI2RlZmluZSBzY2FuYyhjKSBzY2FuZigiJWMiLCAmYykKI2RlZmluZSBzY2FucChmKSBzY2FuZigiJWYiLCAmZikKI2RlZmluZSBzY2FubGwobCkgc2NhbmYoIiVsbGQiLCAmbCkKI2RlZmluZSBzY2FubGx1KHUpIHNjYW5mKCIlbGx1IiwgJnUpCiNkZWZpbmUgcHJpbnQobikgcHJpbnRmKCIlZFxuIiwgbikKI2RlZmluZSBwcmludHMocykgcHJpbnRmKCIlc1xuIiwgcykKI2RlZmluZSBwcmludGMoYykgcHJpbnRmKCIlY1xuIiwgYykKI2RlZmluZSBwcmludHAoZikgcHJpbnRmKCIlZlxuIiwgZikKI2RlZmluZSBwcmludGxsKGwpIHByaW50ZigiJWxsZFxuIiwgbCkKI2RlZmluZSBwcmludGxsdSh1KSBwcmludGYoIiVsbHVcbiIsIHUpCiNkZWZpbmUgbmxpbmUgcHJpbnRmKCJcbiIpCiNkZWZpbmUgbWNscihzdHJuKSBzdHJuLmNsZWFyKCkKI2RlZmluZSBpZ25yIGNpbi5pZ25vcmUoKQojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CiNkZWZpbmUgbGwgbG9uZyBsb25nIGludAojZGVmaW5lIHU2NCB1bnNpZ25lZCBsb25nIGxvbmcgaW50CgppbnQgbWF0WzEwMDVdWzEwMDVdOwoKdm9pZCBmb28oaW50IG4pCnsKCWxsIHNxcj1uKm47CglpbnQgaT0wLCBqPTA7CglmbChpLDAsbisxKQogICAgICAgIGZsKGosMCxuKzEpCiAgICAgICAgICAgIG1hdFtpXVtqXT0wOwoJaW50IGxpbWl0PTE7CiAgICBpPTA7IGo9MDsKCXdoaWxlKGxpbWl0PD1zcXIpCgl7CiAgICAgICAgd2hpbGUobWF0W2ldW2pdPT0wICYmIGo8biAmJiBsaW1pdDw9c3FyKQoJCXsKCSAgICAgICAgCiAgICAgICAgICAgIG1hdFtpXVtqXT1saW1pdDsKICAgICAgICAgICAgbGltaXQrKzsgIGorKzsKICAgICAgICB9CiAgICAgICAgaSsrOyAgIGotLTsKICAgICAgICB3aGlsZShtYXRbaV1bal09PTAgJiYgaTxuICYmIGxpbWl0PD1zcXIpCgkJewogICAgICAgICAgICBtYXRbaV1bal09bGltaXQ7CiAgICAgICAgICAgIGxpbWl0Kys7IGkrKzsKICAgICAgICB9CiAgICAgICAgaS0tOyAgIGotLTsKICAgICAgICB3aGlsZShtYXRbaV1bal09PTAgJiYgaj49MCAmJiBsaW1pdDw9c3FyKQoJCXsKICAgICAgICAgICAgbWF0W2ldW2pdPWxpbWl0OwogICAgICAgICAgICBsaW1pdCsrOyBqLS07CiAgICAgICAgfQogICAgICAgIGorKzsgICBpLS07CiAgICAgICAgd2hpbGUobWF0W2ldW2pdPT0wICYmIGk+PTAgJiYgbGltaXQ8PXNxcikKCQl7CiAgICAgICAgICAgIG1hdFtpXVtqXT1saW1pdDsKICAgICAgICAgICAgbGltaXQrKzsgaS0tOwogICAgICAgIH0KICAgICAgICBpKys7ICBqKys7CiAgICB9Cn0KCmludCBtYWluKCkKewoJaW50IGksIGosIGNhc2VzLCBrPTE7CglpbnQgbjsKCXNjYW4obik7CiAgICBmb28obik7CiAgICBmbChpLDAsbikKCXsKICAgIAlmbChqLDAsbikKICAgICAgICAgICAgcHJpbnRmKCIlZFx0IiwgbWF0W2ldW2pdKTsKICAgICAgICBubGluZTsKICAgIH0KCXJldHVybiAwOwp9Cg==