N가지 길이의 널빤지를 원하는 만큼 사서 합이 정확히 L이 되게 하는 최소 개수를 구하고, 불가능하면 IMPOSSIBLE을 출력합니다.
아주 긴 울타리를 세우려고 한다. 세울 자리는 이미 정해 두었고, 남은 일은 자재를 모으는 것이다.
동네 목재상에서는 여러 길이의 나무 판자를 원하는 만큼 살 수 있다. 자재를 남기지 않으려면 사 온 판자 길이의 합이 울타리 길이와 정확히 같아야 한다.
울타리 길이와 살 수 있는 판자 길이가 주어질 때, 합을 정확히 맞추려면 판자를 최소 몇 장 사야 하는지 구한다.
울타리가 아주 길다는 점을 유의한다.
첫 줄에 테스트 케이스의 수 TTT가 주어진다. 이어서 TTT개의 테스트 케이스가 주어진다.
각 테스트 케이스는 두 줄이다. 첫 줄에는 공백으로 구분된 정수 LLL과 NNN이 주어진다. LLL은 울타리의 전체 길이, NNN은 살 수 있는 판자 길이의 종류 수다. 둘째 줄에는 살 수 있는 판자 길이 B1,B2,…,BNB_1, B_2, \ldots, B_NB1,B2,…,BN이 공백으로 구분되어 주어진다.
각 테스트 케이스마다 Case #x: M 형식으로 한 줄씩 출력한다. xxx는 1부터 시작하는 케이스 번호이고, MMM은 다음과 같다.
Case #x: M
IMPOSSIBLE
예제의 첫 번째 케이스에서는 길이 23인 판자 2장, 길이 51인 판자 5장, 길이 100인 판자 99999997장을 쓰는 것이 최적이다. 길이 100인 판자만 100000001장 사면 합이 LLL보다 커지므로 허용되지 않는다.
두 번째 케이스에서는 짝수 길이만 만들 수 있다.