#include<bits/stdc++.h>
using namespace std;
int a[40][40],n;
bool vis[40][40];
queue<int>qx;
queue<int>qy;
const int d[4][2]={{-1,0},{1,0},{0,1},{0,-1}};
bool bfs(int x,int y)
{
vis[x][y]=1;
qx.push(x);
qy.push(y);
while(!qx.empty()&&!qy.empty())
{
int x=qx.front(),y=qy.front();
if(y==n||x==n||x==1||y==1)return true;//不在闭合圈
qx.pop();
qy.pop();
for(int i=0;i<4;i++)
{
int x1=x+d[i][0],y1=y+d[i][1];
if(x1>=1&&x1<=n&&y1>=1&&y1<=n&&vis[x1][y1]==0&&a[x1][y1]==0)
{
vis[x1][y1]=1;
qx.push(x1);
qy.push(y1);
}
}
}
return false;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
if(a[i][j]==1)vis[i][j]=1;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]==0&&bfs(i,j)==0)
{
a[i][j]=2;
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}