문제
import sys
input = sys.stdin.readline
N = int(input())
Map = []
for i in range(N):
Map.append(list(int(j) for j in input().rstrip()))
visited = [[False for i in range(N)] for i in range(N)]
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
block = [0]
cnt = 0
def dfs(x, y):
visited[x][y] = True
block[cnt] += 1
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < N and 0 <= ny < N and not visited[nx][ny] and Map[nx][ny] == 1:
dfs(nx, ny)
for x in range(N):
for y in range(N):
if Map[x][y] == 1 and not visited[x][y]:
cnt += 1
block.append(0)
dfs(x, y)
print(cnt)
block.sort()
for i in block:
if i != 0:
print(i)