현대 정보과학의 가장 중요한 과제 중 하나는 생물학적 과정을 모델링하는 것입니다. 최근 생물학자들은 $n$개의 바이러스를 발견했고, 각각에 $1$부터 $n$까지의 고유한 번호를 붙였습니다. 바이러스는 다른 생물의 세포에 침투할 수 있습니다. 처음에 과학자들에게는 $1$부터 $n$까지 번호가 붙은 $n$개의 세포가 있으며, $i$번 세포는 $i$번 바이러스에 감염되어 있습니다. 각 세포는 하나의 바이러스에만 감염될 수 있습니다.
각 세포가 각 바이러스에 얼마나 잘 감염되는지에 대한 감수성 순위가 정해져 있습니다. 즉, 각 세포에 대해 가장 감수성이 높은 바이러스, 남은 바이러스 중 가장 감수성이 높은 바이러스, 그다음 바이러스 등이 알려져 있습니다.
바이러스에 감염된 세포들은 서로 공격합니다. 현재 $a$번 바이러스에 감염된 $i$번 세포가 $b$번 바이러스에 감염된 $j$번 세포를 공격한다고 합시다. 그러면 $j$번 세포가 $b$번 바이러스보다 $a$번 바이러스에 대한 감수성이 더 높을 경우, $j$번 세포는 $a$번 바이러스에 감염됩니다.
실험에서 과학자들은 $n$개의 세포를 모두 닫힌 환경에 넣습니다. 세포들은 임의의 방식으로 서로 공격할 수 있습니다. 이러한 공격으로 어떤 세포의 감염 바이러스도 바뀔 수 없게 되면 실험이 끝납니다.
과학자들은 실험이 끝나도록 하는 어떤 공격 순서를 따르더라도 $i$번 바이러스에 감염된 세포가 적어도 하나 남는 경우, $i$번 바이러스를 안정적이라고 부릅니다.
과학자들은 실험이 끝나도록 하는 공격 순서 중에서, 그 결과 $i$번 바이러스에 감염된 세포가 적어도 하나 남는 순서가 존재하는 경우, $i$번 바이러스를 생존 가능하다고 부릅니다.
예를 들어 바이러스가 두 개이고, $1$번 세포는 $1$번 바이러스에 대한 감수성이 가장 높으며, $2$번 세포는 $2$번 바이러스에 대한 감수성이 가장 높다고 합시다. 그러면 어떤 공격도 세포의 감염 바이러스를 바꾸지 않으므로 실험은 즉시 끝납니다. 따라서 두 바이러스 모두 안정적이며 생존 가능합니다.
이번에는 바이러스가 두 개이고, $1$번 세포는 $2$번 바이러스에 대한 감수성이 가장 높으며, $2$번 세포는 $1$번 바이러스에 대한 감수성이 가장 높다고 합시다. 그러면 한 세포가 다른 세포를 공격하기만 하면 실험이 끝납니다. 두 가지 시나리오가 가능합니다. 첫 번째에서는 $1$번 세포가 $2$번 세포를 공격하여 두 세포 모두 $1$번 바이러스에 감염됩니다. 두 번째에서는 $2$번 세포가 $1$번 세포를 공격하여 두 세포 모두 $2$번 바이러스에 감염됩니다. 따라서 안정적인 바이러스는 없지만 두 바이러스 모두 생존 가능합니다.
마지막으로 바이러스가 두 개이고 두 세포 모두 $1$번 바이러스에 대한 감수성이 더 높다고 합시다. 그러면 $2$번 세포가 $1$번 세포를 공격해도 감염 바이러스는 바뀌지 않습니다. 반면 $1$번 세포가 $2$번 세포를 공격하면 두 번째 세포가 $1$번 바이러스에 감염됩니다. 따라서 $2$번 세포가 $1$번 세포를 공격한 후 실험이 끝나며, $1$번 바이러스는 안정적이고 생존 가능하지만 $2$번 바이러스는 어느 성질도 갖지 않습니다.
과학자들은 어떤 바이러스가 안정적인지, 어떤 바이러스가 생존 가능한지라는 두 종류의 질문에 답해야 합니다.
세포에 대한 설명과 질문의 종류가 주어졌을 때, 안정적인 모든 바이러스 또는 생존 가능한 모든 바이러스를 구하는 프로그램을 작성하세요.
입력
첫 번째 줄에는 바이러스의 수이자 세포의 수인 정수 $n$이 주어집니다 ($1\le n\le 500$).
다음 $n$개의 줄에는 세포에 대한 설명이 주어집니다. 각 세포에 대해 $1$부터 $n$까지의 서로 다른 $n$개 수가 주어지며, 이들은 해당 세포의 감수성이 높은 순서대로 나열된 바이러스 번호입니다.
마지막 줄에는 과학자들이 관심 있는 바이러스의 성질을 나타내는 수 $p$가 주어집니다. $p=1$이면 안정적인 모든 바이러스를 구해야 하고, $p=2$이면 생존 가능한 모든 바이러스를 구해야 합니다.
출력
첫 번째 줄에는 관심 있는 성질을 가진 바이러스의 수인 정수 $k$를 출력하세요 ($0\le k\le n$).
두 번째 줄에는 그 성질을 가진 바이러스 번호 $k$개를 출력하세요. 번호는 오름차순으로 출력해야 합니다.
예제
입력 1
2 1 2 2 1 1
출력 1
2 1 2
입력 2
2 1 2 2 1 2
출력 2
2 1 2
입력 3
2 2 1 1 2 1
출력 3
0
입력 4
2 2 1 1 2 2
출력 4
2 1 2
입력 5
2 1 2 1 2 1
출력 5
1 1
입력 6
2 1 2 1 2 2
출력 6
1 1
입력 7
4 3 2 4 1 1 4 2 3 3 1 2 4 1 4 2 3 1
출력 7
1 3
입력 8
4 3 2 4 1 1 4 2 3 3 1 2 4 1 4 2 3 2
출력 8
3 1 3 4
서브태스크
| 서브태스크 | 배점 | $n$ 제한 | $p$ 제한 | 필요한 서브태스크 | 대회 중 제공되는 결과 |
|---|---|---|---|---|---|
| $1$ | $11$ | $1\le n\le 5$ | $p=1$ | 테스트별 결과 | |
| $2$ | $21$ | $1\le n\le 500$ | $p=1$ | $1$ | 첫 번째 오류 |
| $3$ | $22$ | $1\le n\le 5$ | 예제, $1$ | 테스트별 결과 | |
| $4$ | $31$ | $1\le n\le 50$ | 예제, $1$–$3$ | 첫 번째 오류 | |
| $5$ | $15$ | $1\le n\le 500$ | 예제, $1$–$4$ | 첫 번째 오류 |
첫 번째 날 문제에 대한 공통 안내
데이터는 표준 입력에서 읽어야 합니다. 출력 데이터는 표준 출력에 출력해야 합니다.
모든 문제에서 서브태스크의 모든 테스트를 통과한 경우에만 해당 서브태스크의 점수가 주어집니다.