빙고

시간 제한1초메모리 제한128 MB

문제

빙고 게임은 한 명의 진행자와 여러 명의 참가자가 함께 한다. 게임을 시작할 때 각 참가자는 $M \times M$ 개의 수가 행렬 모양으로 적힌 카드를 한 장씩 받는다(그림 1).

카드

그림 1: 카드

4x4 카드의 빙고 패턴

그림 2: 4x4 카드의 빙고 패턴

게임이 진행되는 동안 진행자는 수를 하나씩 차례로 부른다. 부른 수가 자신의 카드에 있으면 참가자는 그 칸에 구멍을 뚫는다.

카드에서 '빙고'가 하나라도 완성되면 그 참가자는 승리하고 게임에서 빠진다. '빙고'란 어떤 한 줄에 있는 $M$ 개의 수가 모두 뚫린 것을 말하며, 줄은 가로 한 행, 세로 한 열, 또는 두 대각선 중 하나이다(그림 2).

진행 중인 빙고 게임의 예

그림 3: 진행 중인 빙고 게임의 예

진행자는 모든 참가자가 빙고를 완성할 때까지 계속 수를 부른다.

보통의 빙고 게임에서는 진행자가 수를 무작위로 뽑으므로 순서를 조절할 수 없다. 그러나 이 문제에서 진행자는 처음부터 모든 카드를 알고 있으며, 부르는 수의 순서를 마음대로 정해 게임을 조절한다.

진행자는 항상 다음 조건이 성립하도록 게임을 조절한다.

$i < j$ 인 모든 쌍에 대하여, 카드 $i$ 는 카드 $j$ 보다 늦지 않게 빙고를 완성한다. $(*)$

예를 들어 그림 3의 상황에서 진행자는 $16$ 보다 먼저 $5$ 를 부를 수 없다. 그렇게 하면 카드 4가 카드 2, 카드 3보다 먼저 빙고가 되어 조건 $(*)$ 를 어기기 때문이다.

주어진 카드들에 대하여, 이 조건을 만족하는 호명 순서의 최소 길이를 구하는 프로그램을 작성하라.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋의 형식은 다음과 같다.

P M
N(1,1,1) N(1,1,2) ... N(1,1,M) N(1,2,1) ... N(1,M,M)
N(2,1,1) N(2,1,2) ... N(2,M,M)
...
N(P,1,1) N(P,1,2) ... N(P,M,M)

모든 값은 정수이다. $P$ 는 카드의 수이자 참가자의 수이고, $M$ 은 각 카드의 행 수이자 열 수이다. $N_{kij}$ 는 $k$ 번째 카드의 $(i, j)$ 위치에 적힌 수이며, 한 카드의 $M \times M$ 개의 수는 행 순서대로 한 줄에 나열된다. 같은 카드 안의 수는 모두 서로 다르다. 즉 $(i, j) \ne (p, q)$ 이면 $N_{kij} \ne N_{kpq}$ 이다. 값의 범위는 $2 \le P \le 4$, $3 \le M \le 4$, $0 \le N_{kij} \le 99$ 이다.

입력의 끝은 공백으로 구분된 두 개의 $0$ 이 적힌 줄로 나타내며, 이 줄은 데이터셋이 아니다.

출력

각 데이터셋마다 조건 $(*)$ 를 만족하는 호명 순서의 최소 길이를 한 줄에 하나씩 출력한다. 그러한 순서가 존재하지 않으면 $0$ 을 출력한다.