/*
#include <stdio.h>
int queue[101]={};
int v[101]={}, arr[101][101]={};
int n, sum=0, back=0, front=0;
int main()
{
int m, a, b, i, j;
scanf("%d %d", &n, &m);
for(i=0;i<m;i++)
{
scanf("%d %d", &a, &b);
arr[a][b]=1;
arr[b][a]=1;
}
while(1)
{
}
printf("%d", sum);
return 0;
}
*/
/*
#include<stdio.h>
int n, sum=0;
int v[101]= {}, arr[101][101]= {};
void dfs(int k)
{
sum+=1;
v[k]=1;
for(int i=1; i<=n; i++)
{
//printf("aa\n");
if(arr[k][i]==1 && v[i]==0)
{
//printf("-> %d ",i);
dfs(i);
}
}
}
int main()
{
int a, b, m, i;
scanf("%d %d", &n, &m);
for(i=0; i<m; i++)
{
scanf("%d %d", &a, &b);
arr[a][b]=1;
arr[b][a]=1;
}
dfs(1);
printf("%d", sum-1);
return 0;
}
*/
/*
#include<stdio.h>
int arr[101][101]={}; //연결상태
int n, sum=0;
int v[101]={};
//
int dfs(int x)
{
sum+=1;
v[x]=1;
for(int i=0;i<=n;i++)
{
if(arr[x][i]==1&&v[i]==0)
{
dfs(i);
}
}
}
int main()
{
int a, b, m, i, j;
scanf("%d %d", &n, &m);
for(i=0;i<m;i++)
{
scanf("%d %d", &a, &b);
arr[a][b]=1;
arr[b][a]=1;
}
dfs(1);
printf("%d", sum-1);
return 0;
}
*/
#include<stdio.h>
int arr[50][50]={};
int sum=0;
void dfs(int k, int p)
{
arr[k][p]=0;
if(p+1<=n && arr[k][p+1]==1)
{
dfs(k, p+1);
}
if(arr[k][p-1]==1)
{
dfs(k, p-1);
}
if(arr[k+1][p]==1)
{
dfs(k+1, p);
}
if(arr[k-1][p]==1)
{
dfs(k-1, p);
}
}
int main()
{
int n, i, j;
scanf("%d", &n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
scanf("%1d", &arr[i][j]);
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(arr[i][j]==1)
{
dfs(i, j);
sum++;
}
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%d", arr[i][j]);
}
printf("\n");
}
printf("%d", sum);
return 0;
}



