우리 회사에는 $m$개의 공석이 있고, 이 자리에 지원한 $n$명의 후보자가 있습니다 ($n \ge m$). 당연히 우리는 최고의 후보자를 채용하고자 합니다. 한 명의 후보자를 두 개 이상의 서로 다른 직무에 채용할 수는 없으므로, 정확히 $m$명의 후보자를 채용해야 합니다. 각 직무에 서로 다른 후보자를 선택하는 방식을 배정(assignment)이라고 부릅니다. 두 배정은 어떤 직무에 대해 채용된 후보자가 서로 다를 경우 서로 다른 것으로 간주합니다.
이익을 나타내는 행렬 $A$가 존재합니다. $A_{ij} \ge 0$은 $i$번째 직무에 $j$번째 후보자를 채용했을 때 얻는 이익을 나타냅니다. 우리는 모든 채용에서 얻는 이익의 합을 최대화하고자 합니다. 이익의 합을 최대화하는 배정을 최적 배정이라고 합니다.
행렬 $A$가 주어진다면 최적의 후보자를 선택하는 것은 쉬울 것입니다. 불행히도 인사팀의 세계는 그렇게 단순하지 않으며, 행렬 $A$를 제공해 줄 수 없습니다. 모든 후보자를 면접한 후에도 우리는 두 후보자가 같은 직무에서 어떻게 행동할지 비교할 수 있을 뿐입니다. 더 정확히 말하면, 우리는 길이 $n$인 $m$개의 순열 $P_i$를 알고 있습니다. 모든 $1 \le i \le m$과 $1 \le x < y \le n$에 대하여 $A_{iP_{ix}} > A_{iP_{iy}}$가 성립합니다. 즉, 각 직무에 대해 모든 후보자의 순위를 알고 있는 셈입니다.
어떤 후보자가 유망하다는 것은, 주어진 모든 순위와 일치하는 행렬 $A$가 존재하며, 이 행렬에 대해 유일한 최적 배정이 존재하고 그 배정에서 해당 후보자가 채용되는 경우를 말합니다.
더 철저한 검증을 수행할 수 있도록 모든 유망한 후보자를 찾아야 합니다.
입력
첫 번째 줄에는 두 정수 $n$과 $m$ ($1 \le m \le 11$, $m \le n \le 1000$)이 주어집니다. 이는 후보자의 수와 직무의 수를 의미합니다.
다음 $m$개의 줄에는 각 직무에 대한 순위가 주어집니다. $i$번째 줄에는 $1$부터 $n$까지의 숫자로 이루어진 순열 $P_{i1}, P_{i2}, \dots, P_{in}$이 포함되어 있습니다.
출력
첫 번째 줄에는 유망한 후보자의 수를 출력하고, 두 번째 줄에는 유망한 후보자의 번호를 오름차순으로 출력합니다.
예제
입력 1
4 2 1 2 4 3 1 3 4 2
출력 1
3 1 2 3
입력 2
4 2 1 4 3 2 2 3 4 1
출력 2
2 1 2