//#include<stdio.h>
//int num=0;
//int arr[26][26]={};
//void dfs(int x, int y)
//{
// if(arr[x][y]==1){
// num++;
// arr[x][y]=-1;
// dfs(x,y+1);
// dfs(x,y-1);
// dfs(x+1,y);
// dfs(x-1,y);
// }
//}
//int main()
//{
// int temp,i,j,n,cnt=0,p[30]={};
// 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)
// {
// num=0;
// dfs(i,j);
// cnt++;
// p[cnt]=num;
// }
// }
// }
//
// for(i=1; i<cnt; i++)
// {
// for(j=1;j<=cnt-i;j++)
// {
// if (p[j] > p[j+1])
// {
// temp = p[j];
// p[j] = p[j+1];
// p[j+1] = temp;
// }
// }
// }
// printf("%d\n",cnt);
// for(i=1;i<=cnt;i++)
// {
// printf("%d\n",p[i]);
// }
//
// return 0;
//}
//
/*
#include<stdio.h>
int num=0;
int arr[9][9]= {};
void dfs(int x,int y,int c)
{
if(arr[x][y]==c)
{
num++;
arr[x][y]=-1;
dfs(x-1,y,c);
dfs(x+1,y,c);
dfs(x,y+1,c);
dfs(x,y-1,c);
}
}
int main()
{
int i,j,cnt=0;
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++)
{
if(arr[i][j]!=-1)
{
num=0;
dfs(i,j,arr[i][j]);
if(num>=3)
{
cnt++;
}
}
}
}
printf("%d",cnt);
return 0;
}
*/
/*
#include<stdio.h>
int num=0;
int arr[30][30]= {};
void dfs(int x,int y)
{
if(arr[x][y]==1)
{
num++;
arr[x][y]=-1;
dfs(x,y+1);
dfs(x,y-1);
dfs(x+1,y);
dfs(x-1,y);
}
}
int main()
{
int i,j,n,x,y,cnt=0,temp,p[30]= {};
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)
{
num=0;
dfs(i,j);
p[++cnt]=num;
}
}
}
for(i=1; i<cnt; i++)
{
{
if(p[j]>p[j+1])
{
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
printf("%d\n",cnt);
for(i=1;i<=cnt;i++)
{
printf("%d\n",p[i]);
}
return 0;
}
*/