#include <bits/stdc++.h>
using namespace std;
struct point{
int x,y;
};
const int maxn=30;
int m[maxn+2][maxn+2],n;
int move[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
void bfs(queue<point> s){
while(!s.empty()){
point temp=s.front();
s.pop();
for(int i=0;i<4;i++){
int x=temp.x+move[i][0],y=temp.y+move[i][1];
if(m[x][y]==2){
m[x][y]=0;
point save;
save.x=x;
save.y=y;
s.push(save);
}
}
}
}
int main(){
queue<point> q;
cin>>n;
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){
cin>>m[i][j];
if(m[i][j]==0)m[i][j]=2;
if((i==1||j==1||i==n||j==n)&&m[i][j]==2){
m[i][j]=0;
point save;
save.x=i;
save.y=j;
q.push(save);
}
}
bfs(q);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)cout<<m[i][j]<<" ";
cout<<endl;
}
return 0;
}