#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
char map[25][25];
char map2[25][25];
vector<int> result;
int num;
int mapping(int i, int j, int island_num);
int main() {
int size = 0;
int island_num = 1;
cin >> size;
for (int i = 0; i < size; i++) {
cin >> map[i];
}
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
map2[i][j] = '0';
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
if (map[i][j] == '1' && map2[i][j] == '0') {
result.push_back(mapping(i,j,island_num));
num = 0;
island_num++;
}
cout << island_num - 1 << endl;
sort(result.begin(), result.end());
for (int i = 0; i < (int)result.size(); i++)
if(result[i]!=-1)
cout << result[i] << endl;
return 0;
}
int mapping(int i, int j, int island_num) {
if (map2[i][j] != '0')
return -1;
map2[i][j] = 1;
num++;
if (i > 0 && map[i - 1][j] == '1' && map2[i-1][j] == '0') {
mapping(i-1, j, island_num);
}
if (j>0 && map[i][j - 1] == '1' && map2[i][j-1] == '0') {
mapping(i, j - 1, island_num);
}
if (j+1<25 && map[i][j + 1] == '1' && map2[i][j+1] == '0') {
mapping(i, j + 1, island_num);
}
if (i+1<25 && map[i+1][j] == '1' && map2[i + 1][j] == '0') {
mapping(i+1, j, island_num);
}
return num;
}