재비어, 세는 법을 배우다

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

문제

9살 학생 재비어는 온갖 종류의 퍼즐을 좋아한다. 그중에서도 특히 좋아하는 퍼즐은 다음과 같다.

같은 반 친구 제리어가 여러 장의 카드를 만들었다. 각 카드에는 양의 정수가 하나씩 적혀 있으며, 같은 수가 적힌 카드는 없다. 그런 다음 제리어는 등식을 하나 적는다. 우변은 그녀가 고른 양의 정수 $n$이고, 좌변은 카드 값 가운데 $p$개의 합이다.

$$X_1 + X_2 + \cdots + X_p = n$$

재비어는 $X_1, X_2, \dots, X_p$ 자리에 카드 $p$장을 놓아 이 등식을 성립시켜야 한다. 이때 고른 값은 작은 것부터 큰 것 순서로 놓아야 한다는 조건이 추가된다.

$$X_i < X_{i+1}, \quad 1 \le i < p$$

모든 카드의 수가 서로 다르므로, 이는 서로 다른 카드 $p$장을 고르는 것과 같다. 고른 카드들을 오름차순으로 배열하는 방법은 정확히 한 가지다. 제리어가 고른 $n$에 대해 재비어는 해가 몇 가지인지 알고 싶어 한다. 각 테스트 케이스에서, 만들 수 있는 모든 합 $n$마다 그 합을 만드는 방법의 수를 구하라.

입력

여러 개의 테스트 케이스가 주어진다. 입력의 첫 줄에 테스트 케이스의 개수 $T$가 주어진다. 이어서 각 테스트 케이스가 차례로 주어진다.

각 테스트 케이스는 두 줄로 이루어진다.

  • 첫째 줄: 공백으로 구분된 두 정수 $m$과 $p$ ($1 \le p \le 5$). $m$은 카드의 개수다.
  • 둘째 줄: 카드에 적힌 서로 다른 양의 정수 $m$개. 각 값은 $13000$을 넘지 않는다.

출력

각 테스트 케이스마다 다음을 출력한다.

  • 먼저 Case #x:를 출력한다. 여기서 $x$는 $1$부터 시작하는 테스트 케이스 번호다.
  • 카드 중 정확히 $p$장을 골라 만들 수 있는 각 합 $n$에 대해, 그 합을 만드는 방법의 수 $w$를 n: w 형식으로 한 줄에 출력한다. 합 $n$은 오름차순으로 나열하고, 한 가지 이상의 방법으로 만들 수 있는 합만 출력한다. 그래야 출력이 유한하다.
  • 각 테스트 케이스 뒤에 빈 줄을 하나 출력한다.