울타리 판자

N가지 길이의 널빤지를 원하는 만큼 사서 합이 정확히 L이 되게 하는 최소 개수를 구하고, 불가능하면 IMPOSSIBLE을 출력합니다.

어려움8최단 경로동적 계획법수학아직 제출이 없습니다시간 제한20초메모리 제한512 MB

문제

아주 긴 울타리를 세우려고 한다. 세울 자리는 이미 정해 두었고, 남은 일은 자재를 모으는 것이다.

동네 목재상에서는 여러 길이의 나무 판자를 원하는 만큼 살 수 있다. 자재를 남기지 않으려면 사 온 판자 길이의 합이 울타리 길이와 정확히 같아야 한다.

울타리 길이와 살 수 있는 판자 길이가 주어질 때, 합을 정확히 맞추려면 판자를 최소 몇 장 사야 하는지 구한다.

울타리가 아주 길다는 점을 유의한다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스는 두 줄이다. 첫 줄에는 공백으로 구분된 정수 LLNN이 주어진다. LL은 울타리의 전체 길이, NN은 살 수 있는 판자 길이의 종류 수다. 둘째 줄에는 살 수 있는 판자 길이 B1,B2,,BNB_1, B_2, \ldots, B_N이 공백으로 구분되어 주어진다.

제한

  • 1T501 \le T \le 50
  • 1010L101810^{10} \le L \le 10^{18}
  • 1N1001 \le N \le 100
  • 1Bi1000001 \le B_i \le 100000

출력

각 테스트 케이스마다 Case #x: M 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 케이스 번호이고, MM은 다음과 같다.

  • 판자를 한 장 이상 사서 길이의 합을 정확히 LL로 만들 수 있으면, MM은 그때 필요한 판자의 최소 장수다.
  • 만들 수 없으면 MM은 문자열 IMPOSSIBLE이다.

힌트

예제의 첫 번째 케이스에서는 길이 23인 판자 2장, 길이 51인 판자 5장, 길이 100인 판자 99999997장을 쓰는 것이 최적이다. 길이 100인 판자만 100000001장 사면 합이 LL보다 커지므로 허용되지 않는다.

두 번째 케이스에서는 짝수 길이만 만들 수 있다.