#include<iostream>
#include<queue>
using namespace std;
struct point{
int x;
int y;
point(int i, int j)
{
x = i;
y = j;
}
};
int n;
int map[32][32];
queue<point> q;
int dx[4] = {1,0,-1,0};
int dy[4] = {0,-1,0,1};
void bfs(int x,int y)
{
point start(x,y);
q.push(start);
map[x][y] = 0;
while(!q.empty())
{
for(int i=0;i<4;++i)
{
int a = q.front().x + dx[i];
int b = q.front().y + dy[i];
if(map[a][b] == 2 && a >= 0 && a < n && b >= 0 && b < n)
{
map[a][b] = 0;
q.push(point(a,b));
}
}
q.pop();
}
}
int main()
{
scanf("%d", &n);
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j)
{
scanf("%d", &map[i][j]);
if(map[i][j] == 0)
map[i][j] = 2;
// 将所有0全部变成2,然后将与边界相邻的2变成0即可
}
}
// 搜索正方形的四条边,有空白处就调用bfs
for(int i=0;i<n;i+=n-1)
for(int j=0;j<n;++j)
if(map[i][j] == 2)
bfs(i,j);
for(int j=0;j<n;j+=n-1)
for(int i=1;i<=n-2;++i)
if(map[i][j] == 2)
bfs(i,j);
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j)
{
printf("%d ", map[i][j]);
}
printf("%c", '\n');
}
return 0;
}