#include <stdio.h>
int arr[26][26]={}, i, j, n, cnt=0;
int danji[500]={};
int wow[100]={}; ;
void dfs(int i, int j)
{
if(i<1 || j<1 || i>n || j>n || arr[i][j]!=1) return ;
danji[cnt]++;
arr[i][j]=0;
dfs(i,j+1);
dfs(i, j-1);
dfs(i+1, j);
dfs(i-1, j);
}
int main()
{
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)
{
cnt++;
dfs(i,j);
}
}
}
printf("%d\n",cnt);
//
for(i=1;i<cnt;i++)
{
for(j=1;j<=cnt-i;j++)
{
if(danji[j]>danji[j+1])
{
danji[0]=danji[j];
danji[j]=danji[j+1];
danji[j+1]=danji[0];
}
}
}
for(i=1;i<=cnt;i++){
printf("%d\n",danji[i]);
}
return 0;
}