#include<bits/stdc++.h>
using namespace std;
const int maxn=40;
int walk[4][2]={{1,0},{0,1},{0,-1},{-1,0}};
int N;
struct coord{
int x,y;
};
queue<coord> Q;
int matrix[maxn][maxn];bool vis[maxn][maxn];
void solve(){
for(int i=2;i<N;++i){
for(int j=1;j<N;++j){
if(vis[i][j]==false) matrix[i][j]=2;
}
}
for(int i=1;i<=N;++i,printf("\n")) for(int j=1;j<=N;++j) printf("%d ",matrix[i][j]);
}
int main(){
scanf("%d",&N);
for(int i=1;i<=N;++i){
for(int j=1;j<=N;++j) {scanf("%d",&matrix[i][j]);vis[i][j]=true;}}
for(int i=1;i<=N;++i) for(int j=1;j<=N;++j) {if(matrix[i][j]==1){Q.push(coord{i+1,j+1});i=j=N;}}
while(!Q.empty()){
cot++;
coord u=Q.front();
int nx=u.x,ny=u.y;
Q.pop();
vis[nx][ny]=false;
for(int k=0;k<4;++k){
int ux=nx+walk[k][0],uy=ny+walk[k][1];
if(ux<1||uy<1||ux>N||uy>N||matrix[ux][uy]!=0||vis[ux][uy]==false) continue;
Q.push(coord{ux,uy});
}
}
solve();
return 0;
}