import sys
def bfs(q, N, b, v, ans):
while q:
r, c = q[0][0], q[0][1]
del q[0]
dr = [0, 0, 1, -1]
dc = [1, -1, 0, 0]
for i in range(4):
nr = r + dr[i]
nc = c + dc[i]
if 0 <= nr < N and 0 <= nc < N:
if b[nr][nc] == '1' and not v[nr][nc]:
q.append([nr, nc])
ans[-1] += 1
v[nr][nc] = True
N = int(sys.stdin.readline())
b = []
for i in range(N):
temp = list(sys.stdin.readline().strip())
b.append(temp)
v = [[False for i in range(N)] for j in range(N)]
ans = 0
ans2 = []
for i in range(N):
for j in range(N):
if b[i][j] == '1' and not v[i][j]:
ans += 1
ans2.append(1)
q = [[i, j]]
v[i][j] = True
bfs(q, N, b, v, ans2)
ans2.sort()
print(ans)
for a in ans2:
print(a)
BFS
평범한 BFS 문제