#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 101;
int N;
char poem[MAXN][MAXN];
char trans[MAXN*MAXN];
int p1DirR[] = {+0,+1,+1,-1};
int p1DirD[] = {+1,-1,+0,+1};
int p2DirR[] = {+0,+1,+0,-1};
int p2DirD[] = {+1,+0,-1,+0};
int main(){
while(cin >> N){
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
cin >> poem[i][j];
}
}
int x=0,y=0;
int toX,toY;
int nowDir = 0;
trans[0] = poem[0][0];
for(int i=1;i<N*N;i++){
toX = x + p1DirR[nowDir];
toY = y + p1DirD[nowDir];
while(toX<0 || toX>=N || toY<0 || toY>=N || poem[toX][toY] == '0' ){
nowDir = (nowDir+1)%4;
toX = x + p1DirR[nowDir];
toY = y + p1DirD[nowDir];
}
trans[i] = poem[toX][toY];
poem[toX][toY] = '0';
x = toX;
y = toY;
if(nowDir == 0 || nowDir == 2){
nowDir++;
}
}
//-------------------
x = y = nowDir =0;
poem[0][0] = trans[0];
for(int i=1;i<N*N;i++){
toX = x + p2DirR[nowDir];
toY = y + p2DirD[nowDir];
while(toX<0 || toX>=N || toY<0 || toY>=N || poem[toX][toY]!= '0'){
nowDir = (nowDir+1)%4;
toX = x + p2DirR[nowDir];
toY = y + p2DirD[nowDir];
}
poem[toX][toY] = trans[i];
x = toX;
y = toY;
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
cout << poem[i][j];
}
cout << endl;
}
}
return 0;
}