총사들
시간 제한1초메모리 제한128 MB
원탁에 앉은 n명에 대해 인접한 두 사람이 겨루는 순서를 임의로 정할 수 있을 때, 마지막까지 살아남을 수 있는 사람을 모두 구한다.
문제
루이 13세와 그의 막강한 재상 리슐리외 추기경의 시대, 한 무리의 총사들이 '가득 찬 술통 여관'에서 식사를 마친 뒤에도 계속 포도주를 마셨다. 포도주가 넉넉했던 탓에 언성이 높아져 난투가 벌어졌고, 모든 총사가 서로를 모욕했다. 결투는 피할 수 없게 되었다.
누가 누구와, 어떤 순서로 싸울지 정하기 위해 총사들은 원을 이루어 선다. 매 라운드마다 총사 한 명이 뽑혀 바로 오른쪽 이웃과 결투한다. 진 사람은 경기에서 빠지고(시신은 하인들이 옮겨 간다), 원이 좁혀지면서 진 사람 옆에 있던 사람이 이긴 사람의 새 이웃이 된다. 이렇게 번의 결투가 끝나면 총사 한 명만 남는다.
가능한 모든 결투의 승패는 미리 정해져 있으며 행렬 로 주어진다. 이면 사람 는 사람 를 항상 이기고, 이면 사람 는 사람 에게 항상 진다. 고를 수 있는 것은 결투의 순서뿐이며, 각 결투의 승자는 행렬로 결정된다. 이 "이긴다" 관계는 반드시 추이적이지는 않다. 즉 가 를 이기고, 가 를 이기며, 가 를 이기는 상황이 생길 수 있다. 그래서 결투를 치르는 순서에 따라 최후의 생존자가 달라진다.
번부터 번까지 번호가 매겨진 명이 원을 이루고 있다. 한 번의 결투에서 뽑힌 사람 는 오른쪽 이웃, 즉 사람 (이면 사람 )과 싸운다. 진 사람은 빠지고 원은 좁혀진다. 어떤 사람 에 대해 번의 결투 순서를 적절히 정해서 를 마지막까지 살아남게 만들 수 있으면, 는 우승할 수 있다고 말한다.
행렬 를 읽고, 우승할 수 있는 모든 사람을 구하여 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 이 주어지며 이다.
다음 개의 줄에는 각각 0 또는 1로 이루어진 길이 의 문자열이 주어지고, 번째 줄의 번째 문자가 이다.
인 모든 경우에 이고, 모든 에 대해 이다.
출력
첫째 줄에 우승할 수 있는 사람의 수 을 출력한다.
그다음 개의 줄에 그 사람들의 번호를 오름차순으로 한 줄에 하나씩 출력한다.
힌트
샘플에서 결투 순서를 1-2, 1-3, 5-6, 7-1, 4-6, 6-1로 정하면 사람 6이 우승한다. 사람 1과 3도 우승할 수 있고 다른 사람은 우승할 수 없으므로, 답은 1, 3, 6이다.