n개 항목의 순열 k개가 주어질 때, 앞선 항목이 뒤 항목보다 과반 이상의 순열에서 앞서는 순열을 찾고, 그러한 순열이 여러 개면 사전순으로 가장 작은 것을 출력한다.
알람은 컴퓨터공학을 공부하는 학생이고, 세포 안에서 발견되는 분자인 마이크로RNA를 다루는 생물정보학 주제로 석사 논문을 쓰고 있다. 알람은 사람의 특정 건강 지표와 관련이 깊은 마이크로RNA를 찾으려 한다.
알람은 마이크로RNA 순위 알고리즘 kkk개를 설계했다. 각 알고리즘은 저마다의 관점으로 마이크로RNA의 순위를 매긴다. 마이크로RNA는 111번부터 nnn번까지 nnn개가 있고, 각 알고리즘은 이 nnn개의 순열 하나를 출력한다. 한 알고리즘이 출력한 순열에서 맨 앞의 마이크로RNA는 그 알고리즘이 건강 지표와 가장 관련이 깊다고 판단한 것이고, 맨 뒤의 마이크로RNA는 가장 관련이 적다고 판단한 것이다.
알람은 합의 순위를 하나 구하려 한다. 합의 순위에서 마이크로RNA iii가 마이크로RNA jjj보다 앞에 놓이려면, 알고리즘 중 적어도 절반이 iii를 jjj보다 앞에 매겨야 한다. 알람을 도와 합의 순위를 찾는 프로그램을 작성하시오.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에 마이크로RNA의 개수 nnn과 순위 알고리즘의 개수 kkk가 공백으로 구분되어 주어진다. (1≤n≤10001 \le n \le 10001≤n≤1000, 1≤k≤2001 \le k \le 2001≤k≤200)
다음 kkk개의 줄 중 iii번째 줄에는 iii번 알고리즘이 출력한 111부터 nnn까지의 순열이 주어진다.
입력의 마지막 줄에는 0 0이 주어진다. 이 줄은 처리하지 않는다.
0 0
각 테스트 케이스마다 합의 순위가 되는 111부터 nnn까지의 순열을 한 줄에 출력한다. 두 수 사이에는 공백을 하나 넣는다.
합의 순위가 여러 개면 그중 사전순으로 가장 앞서는 것을 출력한다. 수열 a1,…,ana_1, \dots, a_na1,…,an이 수열 b1,…,bnb_1, \dots, b_nb1,…,bn보다 사전순으로 앞선다는 것은, 어떤 양의 정수 jjj가 있어 1≤i≤j−11 \le i \le j - 11≤i≤j−1인 모든 iii에 대해 ai=bia_i = b_iai=bi이고 aj<bja_j < b_jaj<bj인 경우를 뜻한다.
합의 순위가 존재하지 않으면 대신 No solution을 출력한다.
No solution