드워프 왕 스로르는 가장 뛰어난 전사 $k$명에게 자신의 금괴 일부를 상으로 주려고 합니다. 드워프의 화폐 단위는 미리안(Mirian)입니다. 스로르는 값이 서로 다른 금괴 $n$개를 가지고 있으며, 각 금괴의 가치는 $v_1, \dots, v_n$ 미리안입니다. 그는 가치의 합이 정확히 목표액 $T$ 미리안이 되도록 금괴 $k$개를 나누어 주려고 합니다. 전사들의 공로가 저마다 달라 각자 받는 금괴의 값도 대체로 서로 다릅니다.
스로르는 동생 프로르에게, 목표액 $T$를 서로 다른 금괴 정확히 $k$개의 가치의 합으로 나타내는 서로 다른 방법이 몇 가지인지 세어 달라고 부탁합니다.
예를 들어 금괴가 $n = 10$개이고 $V = {1, 2, 4, 5, 10, 11, 13, 15, 17, 19}$일 때, $k = 3$개를 나누어 목표액 $T = 20$을 만드는 방법은 네 가지입니다.
$1 + 2 + 17$, $1 + 4 + 15$, $2 + 5 + 13$, $4 + 5 + 11$.
같은 목표액에서 전사가 $k = 4$명이면 방법은 두 가지뿐입니다.
$1 + 2 + 4 + 13$, $1 + 4 + 5 + 10$.
목표액 $T$, 전사 수 $k$, 금괴 값 $V = {v_1, \dots, v_n}$이 주어질 때, $V$에서 서로 다른 값 정확히 $k$개를 골라 합이 $T$가 되는 서로 다른 방법의 수를 구하는 프로그램을 작성하세요. 방법의 수가 20 이하이면 모든 방법을 사전순 오름차순으로도 출력해야 합니다. 즉 가장 작은 금괴를 사용하는 방법을 먼저, 그중에서는 그다음으로 작은 금괴를 사용하는 방법을 먼저 나열하는 식입니다. 한 방법 안에서 값들은 오름차순으로 출력합니다.
첫 줄에 테스트 케이스의 수 $C$가 주어집니다($C \le 100$). 각 테스트 케이스의 형식은 다음과 같습니다.
방법의 수는 부호 있는 64비트 정수에 들어가도록 보장됩니다(즉 $2^{63} - 1$ 미만입니다).
각 테스트 케이스마다 주어진 순서대로 다음 블록을 출력합니다.
Test case X
Target sum = T
Number of warriors = k
V = {v1, v2, ..., vn}
Number of solutions = C
여기서 X는 1부터 시작하는 테스트 케이스 번호이고, T, k, 금괴 값들은 입력을 그대로 옮긴 것입니다(중괄호 안의 값들은 쉼표와 공백으로 구분합니다). C는 목표액을 만드는 방법의 수입니다. Target sum, Number of warriors, V = {...} 줄은 각각 맨 앞에 공백 한 칸으로 시작하고, Number of solutions 줄은 그렇지 않습니다.
C가 20 이하이면 각 방법을 사전순 오름차순으로 한 줄씩 추가로 출력합니다. 각 줄은 맨 앞에 공백 한 칸으로 시작하고, 이어서 선택한 $k$개의 값을 오름차순으로 공백 한 칸씩 구분하여 출력합니다.
이웃한 테스트 케이스 사이에는 빈 줄을 하나 출력합니다.