# Topic : Graph _ 단지번호붙이기
#
# Python 3 : 88ms
# graph의 요소를 하나씩 순차탐색하면서 1인 요소가 등장시 해당 요소를 기준으로 BFS 수행한다.
# 이때 BFS로 접근하는 요소들은 count 값으로 최신화 해주고 이는 2부터 시작하여 1씩 증가한다.

from collections import deque
import sys

def bfs(x,y):
  dx = [1,-1,0,0]
  dy = [0,0,1,-1]

  # 시작점 최신화 
  queue = deque()
  graph[x][y] = count
  queue.append((x,y))

  num = 1  # 해당 단지에 몇개의 집이 있는지 세는 var
  while queue:
    x,y = queue.popleft()
    for i in range(4):
      nx = x + dx[i]
      ny = y + dy[i]

      if nx < 0 or nx >= N or ny < 0 or ny >= N:
        continue

      if graph[nx][ny] == 1:  # 그래프 요소가 1인 요소들만 count로 최신화해준다.
        graph[nx][ny] = count
        queue.append((nx,ny))
        num += 1
  
  num_list.append(num)

N = int(input())

graph = []
for _ in range(N):
  line = sys.stdin.readline().rstrip()
  graph.append([ int(l) for l in line ])

count = 2
num_list = []
for x in range(N):
  for y in range(N):
    if graph[x][y] == 1:  # 그래프 요소가 1인 경우에 해당 요소를 시작점으로 BFS 시작
      bfs(x,y)
      # print("x : ",x,"y : ",y)
      # print(graph)
      # print()
      count += 1

num_list.sort()

print(count-2)
for s in num_list:
  print(s)