/*
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
*/
/*
#include<stdio.h>
int main()
{
int map[26][26]= {0};
int n,i,j,c,sum=0;
scanf("%d",&n);
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
scanf("%1d",&map[i][j]);
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(map[i][j]==1)
{
if(map[i+1][j]==1||map[i-1][j]==1||map[i][j+1]==1||map[i][j-1]==1)
{
map[i][j]=0;
}
}
}
}
return 0;
}
*/
#include<stdio.h>
int map[30][30] = {0}, count[1000] = {0},sum=0;
void find(int x, int y)
{
count[sum]++;
map[x][y] = 0;
if(map[x-1][y]==1)
{
find(x-1, y);
}
if(map[x+1][y]==1)
{
find(x+1, y);
}
if(map[x][y-1]==1)
{
find(x, y-1);
}
if(map[x][y+1]==1)
{
find(x, y+1);
}
}
int main()
{
int i,j,n,a,temp=0;
scanf ("%d",&n);
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
scanf ("%1d",&map[i][j]);
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(map[i][j]==1)
{
find(i,j);
sum++;
}
}
}
printf("%d\n", sum);
for(i=0; i<sum-1; i++)
{
if(count[i]>count[i+1])
{
temp=count[i];
count[i]=count[i+1];
count[i+1]=temp;
}
}
for(i=0; i<sum; i++)
{
printf("%d\n", count[i]);
}
}