파도의 왕

참가자 0인 헹크가 토너먼트에서 왕이 될 수 있는지 판정하고, 가능하면 지정된 BFS 트리 순서를 뒤집어 출력한다.

보통5BFS그래프그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

참가자 nn명이 겨루는 킹 오브 더 힐 방식의 패들보드 대회 BAPC를 당신이 연다. 먼저 한 명이 왕이 되고, 나머지 참가자가 한 명씩 왕에게 도전한다. 도전에서 이긴 쪽이 새 왕이 된다. 처음 왕이 된 참가자를 빼면 모든 참가자가 정확히 한 번씩 도전하고, 패들보드 경기에 무승부는 없다. 마지막 경기가 끝난 뒤 왕인 참가자가 대회에서 우승한다.

대회를 여는 사람이 당신이므로 누가 처음 왕이 될지와 도전 순서를 당신이 정한다. 어떤 사람이 참가자 00번인 헨크를 우승시켜 주면 큰돈을 주겠다고 제안했다. 당신은 두 참가자 xxyy가 맞붙으면 누가 이기는지 모두 알고 있다. 그래서 대회를 조작하기로 한다. 헨크가 우승하는 일정이 있는지 판단하고, 있으면 출력에서 정한 일정을 출력하라.

입력

첫째 줄에 참가자 수 nn이 주어진다. (1n10001 \le n \le 1000) 참가자 번호는 00번부터 n1n-1번까지이고, 헨크는 00번이다.

다음 nn개 줄에는 각각 정확히 nn개의 문자가 주어진다. ii번째 줄의 jj번째 문자는 참가자 ii와 참가자 jj의 경기 결과를 뜻한다. (0i,j<n0 \le i, j < n)

  • 1: 참가자 ii가 참가자 jj를 이긴다.
  • 0: 참가자 ii가 참가자 jj에게 진다.
  • X: i=ji = j인 경우.

출력

헨크가 우승하는 일정이 없으면 impossible을 출력한다.

일정이 있으면 다음 규칙으로 정해지는 일정 하나만 출력한다.

참가자 00번에서 시작하는 너비 우선 탐색으로 트리를 만든다. 참가자 00번을 방문 표시하고 큐에 넣는다. 큐가 빌 때까지, 큐 맨 앞의 참가자 uu를 꺼내고 j=0,1,,n1j = 0, 1, \dots, n-1 순서로 살핀다. jj를 아직 방문하지 않았고 uujj를 이기면, jj를 방문 표시하고 jj의 부모를 uu로 기록한 뒤 jj를 큐 뒤에 넣는다. 이 탐색이 모든 참가자를 방문할 때만 헨크가 우승하는 일정이 존재한다.

만든 트리를 전위 순회한다. 전위 순회는 참가자를 먼저 방문하고, 그 자식은 번호가 작은 쪽부터 방문한다. 이 순서를 뒤집어 한 줄에 공백 하나로 구분해 출력한다. 가장 먼저 출력한 참가자가 처음 왕이 되고, 나머지는 출력한 순서대로 왕에게 도전한다.

헨크가 우승하는 일정이 하나라도 있으면 이 일정도 헨크를 우승시킨다. 우승하는 일정이 여러 개여도 이 일정만 정답으로 인정한다.