너비가 w1,w2,…,wn인 박스 n개와 너비가 W인 큰 박스가 있다. 박스를 큰 박스에 넣는 방법의 수를 구하는 프로그램을 작성하시오.
조건은 다음과 같다.
첫째 줄에 테스트 케이스의 개수 T (T≤100)가 주어진다.
각 테스트 케이스의 첫째 줄에 n (1≤n≤100)과 W (1≤W≤1000)가 주어진다. 둘째 줄에 박스의 너비 w1,w2,…,wn이 주어진다. (1≤wi≤W)
각 테스트 케이스마다 Case x: y 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 방법의 수를 10007로 나눈 나머지이다.
n=3, W=5이고 너비가 1,2,3인 경우 가능한 방법은 다음 여섯 가지이다. 각 줄은 왼쪽부터 넣은 박스의 너비를 순서대로 적은 것이다.
박스를 하나만 넣는 1, 2, 3은 모두 2번 조건에 걸린다. 오른쪽 빈 공간에 들어갈 수 있는 박스가 아직 남아 있기 때문이다.