#include <iostream>
#include <queue>
using namespace std;
int n,m,k[200][200];
struct node{
int x,y;
};
bool visit[200][200];
int mx[4]={1,-1,0,0};
int my[4]={0,0,1,-1};
bool q[200][200];
int bfs(int sx,int sy){
queue <node> que;
node head;
head.x=sx;
head.y=sy;
visit[sx][sy]=1;
que.push(head);
while(!que.empty()){
node f=que.front();
que.pop();
for(int i = 0;i<4;i++){
int tx = f.x + mx[i];
int ty = f.y + my[i];
if(!visit[tx][ty] && k[tx][ty]==0){
node n;
n.x=tx;
n.y=ty;
q[tx][ty]=1;
que.push(n);
visit[tx][ty]=1;
}
}
}
}
int main(){
cin>>n;
for(int i = 1;i<=n;i++){
for(int j = 1;j<=n;j++){
cin>>k[i][j];
}
}
bfs(n,n);
for(int i = 1;i<=n;i++){
for(int j = 1;j<=n;j++){
if(q[i][j])cout<<k[i][j]<<' ';
else if(!q[i][j] && k[i][j]==1)cout<<k[i][j]<<' ';
else{
cout<<2<<' ';
}
}
cout<<endl;
}
return 0;
}