숫자 카드 마술

부분집합 곱 개수로 구한 사후 가중치가 가장 큰 N개 숫자 후보를 고릅니다.

보통4완전 탐색조합론아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

마리암과 페이링이 숫자 마술을 연습한다. 마술은 이렇게 진행된다.

마리암은 먼저 22 이상 MM 이하인 정수 NN개를 고른다. 각 수는 서로 독립이고, 가능한 값은 모두 같은 확률로 나온다. 고른 수는 카드 NN장에 하나씩 적으며, 같은 수가 여러 번 나오기도 한다. 그다음 아래 과정을 KK번 반복한다. 카드마다 확률 0.50.5로 독립하게 뽑아 부분집합을 만들고, 그 부분집합에 적힌 수의 곱을 적는다. 카드를 하나도 뽑지 않았다면 곱은 11이다.

마리암은 이렇게 얻은 곱 KK개를 페이링에게 보여준다. 페이링은 NN, MM, KK와 곱 KK개만 보고 카드에 적힌 수를 맞혀야 한다.

곱만으로 원래 수가 하나로 정해지지 않는 경우가 많다. 곱이 모두 11이면 카드에 대한 정보가 아예 없다. 그래서 이 문제는 사후 확률이 가장 큰 후보를 답으로 요구한다.

2B1B2BNM2 \le B_1 \le B_2 \le \dots \le B_N \le M인 수열 BB를 후보라고 하자. 관측한 곱을 P1,P2,,PKP_1, P_2, \dots, P_K라 하고, cB(p)c_B(p)를 원소의 곱이 pp{1,2,,N}\{1, 2, \dots, N\}의 부분집합 개수라고 하자. 공집합의 곱은 11이다. o(B)o(B)BB의 원소를 나열하는 서로 다른 순서의 개수로, 값 vvBBmvm_v번 나오면 o(B)=N!/vmv!o(B) = N! / \prod_v m_v!이다. 후보의 무게를 다음과 같이 정의한다.

W(B)=o(B)×j=1KcB(Pj)W(B) = o(B) \times \prod_{j=1}^{K} c_B(P_j)

W(B)W(B)는 관측한 곱이 주어졌을 때 마리암이 고른 수의 모임이 BB일 확률에 비례한다.

각 세트마다 W(B)W(B)가 가장 큰 후보를 출력한다. 그런 후보가 여럿이면 사전순으로 가장 앞서는 것을 출력한다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. TT는 항상 11이다. 둘째 줄에 네 정수 RR, NN, MM, KK가 공백으로 구분되어 주어진다. 이어지는 RR개 줄에 각각 곱 KK개가 공백으로 구분되어 주어진다. 각 줄은 마리암이 위 절차대로 만든 서로 독립인 세트 하나다.

출력

첫째 줄에 "Case #1:"을 출력한다. 이어서 RR개 줄에 각 세트의 답을 순서대로 출력한다. 한 줄에는 숫자 NN개를 오름차순으로 공백 없이 붙여 쓴다. M<10M < 10이므로 모든 수는 한 자리다.

제한

  • T=1T = 1
  • 1R1001 \le R \le 100
  • 1N61 \le N \le 6
  • 2M92 \le M \le 9
  • 1K101 \le K \le 10
  • 모든 입력은 문제의 절차대로 만들어졌다. 즉 각 PjP_j는 그 세트의 숨은 수 가운데 어떤 부분집합의 곱이다.

노트

첫 번째 예제의 첫 세트는 N=3N = 3, M=4M = 4이고 곱 가운데 3636이 있다. 22 이상 44 이하인 수 셋의 곱으로 3636을 만드는 방법은 3×3×43 \times 3 \times 4 하나뿐이므로 답은 334이다. 둘째 세트는 곱이 모두 11이라 모든 후보의 cB(1)c_B(1)11로 같다. 이때는 o(B)o(B)가 큰 후보가 이긴다. 서로 다른 세 수를 고른 후보의 o(B)=6o(B) = 6이 가장 크고, 그중 사전순으로 가장 앞선 234가 답이다.