
#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int map[27][27];
int danji[320];
int n;
queue<int> Qx;
queue<int> Qy;
int main()
{
int i,j;
int cnt=0;
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
scanf("%1d",&map[i][j]);
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(map[i][j]==1)
{
cnt++;
map[i][j]=0;
Qx.push(i);
Qy.push(j);
danji[cnt]++;
while(!Qx.empty())
{
int x=Qx.front();Qx.pop();
int y=Qy.front();Qy.pop();
if(map[x-1][y]==1)
{
map[x-1][y]=0;
Qx.push(x-1);
Qy.push(y);
danji[cnt]++;
}
if(map[x+1][y]==1)
{
map[x+1][y]=0;
Qx.push(x+1);
Qy.push(y);
danji[cnt]++;
}
if(map[x][y-1]==1)
{
map[x][y-1]=0;
Qx.push(x);
Qy.push(y-1);
danji[cnt]++;
}
if(map[x][y+1]==1)
{
map[x][y+1]=0;
Qx.push(x);
Qy.push(y+1);
danji[cnt]++;
}
}
}
}
}
printf("%d\n",cnt);
sort(danji+1,danji+cnt+1);
for(i=1;i<=cnt;i++)
{
printf("%d\n",danji[i]);
}
return 0;
}