# 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)