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