250502
/*
#include <stdio.h>
int arr[50][50]= {}, count[500]= {};
int n, sum=0;
int dfs(int k, int p)
{
arr[k][p]=0;
count[sum]++;
if(p+1<=n&&arr[k][p+1]==1)
{
dfs(k, p+1);
}
if(p-1>0&&arr[k][p-1]==1)
{
dfs(k, p-1);
}
if(k+1<=n&&arr[k+1][p]==1)
{
dfs(k+1, p);
}
if(k-1>0&&arr[k-1][p]==1)
{
dfs(k-1, p);
}
}
int main()
{
int i, j, d=0, temp;
int memo[100]= {};
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++;
}
}
}
printf("%d\n", sum);
for(i=0; i<sum; i++)
{
for(j=0;j<sum;j++)
{
if(count[j]>count[j+1])
{
temp=count[j];
count[j]=count[j+1];
count[j+1]=temp;
}
}
}
for(i=1;i<=sum;i++)
{
printf("%d\n", count[i]);
}
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(p-1>0&&arr[k][p-1]==1)
{
dfs(k, p-1);
}
if(k+1<=n&&arr[k+1][p]==1)
{
dfs(k+1, p);
}
if(k-1>0&&arr[k-1][p]==1)
{
dfs(k-1, p);
}
}
int main()
{
int n, h, i, j;
scanf("%d", &n);
for(i=1;i<=h;i++)
{
for(j=1;j<=n;j++)
{
scanf("%d", arr[i][j]);
}
}
}
for(i=1; i<=h; i++)
{
for(j=1; j<=n; j++)
{
if(arr[i][j]==1)
{
dfs(i, j);
sum++;
}
}
}
printf("%d", sum);
return 0;
}




