마이크로RNA 순위

n개 항목의 순열 k개가 주어질 때, 앞선 항목이 뒤 항목보다 과반 이상의 순열에서 앞서는 순열을 찾고, 그러한 순열이 여러 개면 사전순으로 가장 작은 것을 출력한다.

보통7그래프위상 정렬정렬그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

알람은 컴퓨터공학을 공부하는 학생이고, 세포 안에서 발견되는 분자인 마이크로RNA를 다루는 생물정보학 주제로 석사 논문을 쓰고 있다. 알람은 사람의 특정 건강 지표와 관련이 깊은 마이크로RNA를 찾으려 한다.

알람은 마이크로RNA 순위 알고리즘 kk개를 설계했다. 각 알고리즘은 저마다의 관점으로 마이크로RNA의 순위를 매긴다. 마이크로RNA는 11번부터 nn번까지 nn개가 있고, 각 알고리즘은 이 nn개의 순열 하나를 출력한다. 한 알고리즘이 출력한 순열에서 맨 앞의 마이크로RNA는 그 알고리즘이 건강 지표와 가장 관련이 깊다고 판단한 것이고, 맨 뒤의 마이크로RNA는 가장 관련이 적다고 판단한 것이다.

알람은 합의 순위를 하나 구하려 한다. 합의 순위에서 마이크로RNA ii가 마이크로RNA jj보다 앞에 놓이려면, 알고리즘 중 적어도 절반이 iijj보다 앞에 매겨야 한다. 알람을 도와 합의 순위를 찾는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에 마이크로RNA의 개수 nn과 순위 알고리즘의 개수 kk가 공백으로 구분되어 주어진다. (1n10001 \le n \le 1000, 1k2001 \le k \le 200)

다음 kk개의 줄 중 ii번째 줄에는 ii번 알고리즘이 출력한 11부터 nn까지의 순열이 주어진다.

입력의 마지막 줄에는 0 0이 주어진다. 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 합의 순위가 되는 11부터 nn까지의 순열을 한 줄에 출력한다. 두 수 사이에는 공백을 하나 넣는다.

합의 순위가 여러 개면 그중 사전순으로 가장 앞서는 것을 출력한다. 수열 a1,,ana_1, \dots, a_n이 수열 b1,,bnb_1, \dots, b_n보다 사전순으로 앞선다는 것은, 어떤 양의 정수 jj가 있어 1ij11 \le i \le j - 1인 모든 ii에 대해 ai=bia_i = b_i이고 aj<bja_j < b_j인 경우를 뜻한다.

합의 순위가 존재하지 않으면 대신 No solution을 출력한다.