#include<bits/stdc++.h>
#define ll long long
#define int long long
#define endl '\n'
#define all(s) s.begin(),s.end()
#define rep(i,n) for(int i=0;i<(n);i++)//0-indexed
#define ull unsigned long long
// #define NDEBUG
#define loop(a,b) for(int i=a;i<=b;i++)
#define format(n) fixed<<setprecision(n)
// Matrix vector<vector<data type>>a(r,vector<data type>(c));
#define AYAA ios_base::sync_with_stdio(false); cout.tie(0);
using namespace std;
int fx[]={0,-1,0,1};
int fy[]={1,0,-1,0};
int pos;
int n,m,cnt=0;
int vis[1000][1000];
bool notvalid(int i,int j,vector<vector<int>>&a){
if(i>n||j>m||i<1||j<1||vis[i][j])
return true;
else
return false;
}
void reco(int i,int j,vector<vector<int>>&a){
if(notvalid(i,j,a)) {
pos=(pos+1)%4;
return;
}
cnt++;
cout<<a[i][j]<<" ";
if(cnt%n==0) cout<<endl;
vis[i][j]=1;
reco(i+fx[pos],j+fy[pos],a);
reco(i+fx[pos],j+fy[pos],a);
reco(i+fx[pos],j+fy[pos],a);
reco(i+fx[pos],j+fy[pos],a);
}
int32_t main() {
#ifndef ONLINE_JUDGE
freopen("Input.txt","r",stdin);
freopen("Output.txt","w",stdout);
#endif
AYAA
int t=1;
//cin>>t;
while(t--) {
cin>>n;
m=n;
vector<vector<int>>a(n+1,vector<int>(m+1));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
reco(1,1,a);
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgYWxsKHMpIHMuYmVnaW4oKSxzLmVuZCgpCiNkZWZpbmUgcmVwKGksbikgZm9yKGludCBpPTA7aTwobik7aSsrKS8vMC1pbmRleGVkCiNkZWZpbmUgdWxsIHVuc2lnbmVkIGxvbmcgbG9uZwovLyAjZGVmaW5lIE5ERUJVRwojZGVmaW5lIGxvb3AoYSxiKSAgICAgICAgICAgICBmb3IoaW50IGk9YTtpPD1iO2krKykKI2RlZmluZSBmb3JtYXQobikgZml4ZWQ8PHNldHByZWNpc2lvbihuKQovLyBNYXRyaXggIHZlY3Rvcjx2ZWN0b3I8ZGF0YSB0eXBlPj5hKHIsdmVjdG9yPGRhdGEgdHlwZT4oYykpOwojZGVmaW5lIEFZQUEgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNvdXQudGllKDApOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgZnhbXT17MCwtMSwwLDF9OwppbnQgZnlbXT17MSwwLC0xLDB9OwppbnQgcG9zOwppbnQgbixtLGNudD0wOwppbnQgdmlzWzEwMDBdWzEwMDBdOwpib29sIG5vdHZhbGlkKGludCBpLGludCBqLHZlY3Rvcjx2ZWN0b3I8aW50Pj4mYSl7CiAgICBpZihpPm58fGo+bXx8aTwxfHxqPDF8fHZpc1tpXVtqXSkKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIGVsc2UKICAgICAgICByZXR1cm4gZmFsc2U7Cn0Kdm9pZCByZWNvKGludCBpLGludCBqLHZlY3Rvcjx2ZWN0b3I8aW50Pj4mYSl7CiAgICBpZihub3R2YWxpZChpLGosYSkpIHsKICAgICAgICBwb3M9KHBvcysxKSU0OwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGNudCsrOwogICAgY291dDw8YVtpXVtqXTw8IiAiOwogICAgaWYoY250JW49PTApIGNvdXQ8PGVuZGw7CiAgICB2aXNbaV1bal09MTsKICAgIHJlY28oaStmeFtwb3NdLGorZnlbcG9zXSxhKTsKICAgIHJlY28oaStmeFtwb3NdLGorZnlbcG9zXSxhKTsKICAgIHJlY28oaStmeFtwb3NdLGorZnlbcG9zXSxhKTsKICAgIHJlY28oaStmeFtwb3NdLGorZnlbcG9zXSxhKTsKCgoKCgoKCn0KCgoKCgppbnQzMl90ICBtYWluKCkgewojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiSW5wdXQudHh0IiwiciIsc3RkaW4pOwogICAgZnJlb3BlbigiT3V0cHV0LnR4dCIsInciLHN0ZG91dCk7CiNlbmRpZgogICAgQVlBQQoKCgoKICAgIGludCB0PTE7CiAgICAvL2Npbj4+dDsKICAgIHdoaWxlKHQtLSkgewogICAgICAgIGNpbj4+bjsKICAgICAgICBtPW47CiAgICAgICAgdmVjdG9yPHZlY3RvcjxpbnQ+PmEobisxLHZlY3RvcjxpbnQ+KG0rMSkpOwogICAgICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKXsKICAgICAgICAgICAgZm9yKGludCBqPTE7ajw9bTtqKyspewogICAgICAgICAgICAgICAgY2luPj5hW2ldW2pdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJlY28oMSwxLGEpOwoKICAgIH0KCgoKCgoKCgogICAgcmV0dXJuIDA7Cn0=