타일 자르기 (Small)

필요한 2의 거듭제곱 크기 정사각형을 잘라 만들 때 사야 하는 M×M 타일의 최소 개수를 구합니다.

보통5그리디수학아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

엔조는 새로 산 집을 고치고 있다. 가장 까다로운 일은 필요한 타일을 정확히 맞춰 사는 것이다.

엔조에게는 정사각형 타일 NN개가 필요하고, kk번째 타일의 한 변 길이는 2Sk2^{S_k}이다. 가게에서는 M×MM \times M 크기의 정사각형 타일만 판다. 엔조는 산 타일을 변에 평행한 방향으로만 자르고, 필요한 타일은 모두 여기서 잘라 낸다. 필요한 타일 한 장은 산 타일 한 장에서 통째로 잘라 내야 하며, 여러 조각을 이어 붙일 수는 없다.

엔조가 사야 하는 타일은 최소 몇 장인가?

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 TT개의 줄에 테스트 케이스가 한 줄씩 주어진다. 각 줄은 필요한 타일의 개수 NN과 가게에서 파는 타일의 크기 MM으로 시작하고, 그 뒤에 타일의 크기를 정하는 정수 S1,S2,,SNS_1, S_2, \dots, S_N이 차례로 주어진다.

제한

  • 1T1001 \le T \le 100
  • 1N201 \le N \le 20
  • 12SkM23111 \le 2^{S_k} \le M \le 2^{31}-1

출력

각 테스트 케이스마다 "Case #x: y" 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 엔조가 사야 하는 타일의 최소 개수이다.