팔씨름 토너먼트

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

쿠미스 씨가 2N2^N 명의 선수가 참가하는 팔씨름 토너먼트를 개최합니다. 선수들은 11 번부터 2N2^N 번까지 번호가 매겨져 있습니다. 토너먼트는 싱글 엘리미네이션 방식입니다. 첫 번째 라운드에서는 11 번 선수가 22 번 선수와, 33 번 선수가 44 번 선수와 겨루는 식으로 진행됩니다. 다음 라운드에서는 (11, 22)의 승자가 (33, 44)의 승자와, (55, 66)의 승자가 (77, 88)의 승자와 겨루며, 이렇게 우승자 한 명이 남을 때까지 계속됩니다.

각 선수 ii 는 초기 힘 PiP_i 를 가집니다. 두 선수가 겨루면 현재 힘이 더 큰 쪽이 이기고, 승자의 힘은 패자의 현재 힘만큼 줄어듭니다. 두 선수의 현재 힘이 같다면 번호가 더 작은 선수가 이깁니다(이 경우 승자의 힘은 00 이 됩니다).

승자는 다음 경기 전에 힘을 회복합니다. 현재 힘이 최대 KK 만큼 늘어나지만, 초기 힘 PiP_i 를 넘을 수는 없습니다. 즉, 다음 경기 전 힘은 min(Pi,현재+K)\min(P_i, \text{현재} + K) 가 됩니다. 첫 번째 라운드 전에는 회복이 없습니다.

토너먼트의 우승자가 누구인지, 그리고 우승자가 경기 순서대로 이긴 선수들이 누구인지 구하세요.

입력

첫 번째 줄에 테스트 케이스의 수를 나타내는 정수 TT (T100T \le 100) 가 주어집니다. 각 테스트 케이스는 두 정수 NN (1N151 \le N \le 15) 과 KK (0K10000 \le K \le 1000) 가 있는 줄로 시작합니다. 다음 줄에는 각 선수의 초기 힘을 나타내는 2N2^N 개의 정수 P1,P2,,P2NP_1, P_2, \dots, P_{2^N} (1Pi10001 \le P_i \le 1000) 가 주어집니다.

출력

각 테스트 케이스마다 두 줄을 출력합니다. 첫 번째 줄에는 토너먼트 우승자의 번호를 출력합니다. 두 번째 줄에는 우승자가 이긴 선수들을 경기 순서(첫 라운드부터 결승까지)대로 NN 개의 정수로 출력하며, 정수는 공백 하나로 구분합니다.