#부분집합의 합 문제
# 부분집합 중 그 집합의 원소를 모두 더한 값이 0이 되는 경우가 있는지 알아내는 문제
#집합의 원소가 n개일때 공집합 포함 부분집합의 수는 2의 n개
#부분 집합 문제 알고리즘1
# loop를 이용하여 확인하고, 부분 집합을 생성하는 방법
# bit = [0,0,0,0]
# for i in range(2):
# bit[0] = i # 0번째 원소를 보일까 말까
# for j in range(2):
# bit[1] = j #1번째 원소
# for k in range(2):
# bit[2] = k #2번째 원소
# for l in range(2):
# bit[3] = l
# print(bit)
# #보다 간결하게 부분집합 생성하는 방법
# #부분 집합 문제 알고리즘2
# arr = [3,6,7,1,5,4]
# n = len(arr)
# for i in range(1<<n):
# for j in range(n):
# if i&(1<<j): # i 에서 j 번째 비트가 1인지 아닌지를 리턴
# print(arr[j], end=',')
# print()
# i와 j를 비트라고 생각하고 봐주세요
# 1<< j를 하면 1이 오른쪽에서부터 j번 밀려요
# 근데 그걸 i라는 값을 지닌 비트랑 비교했을 때 i값에서 오른쪽으로부터 j번째 위치한 비트가 1이면 값이 ㅇ, 1리턴 true
# 아니라면 0을 리턴 false
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
1부터 12까지의 숫자를 원소로 가진 집합 A가 있다. 집합 A의 부분 집합 중 N개의 원소를 갖고 있고, 원소의 합이 K인 부분집합의 개수를 출력하는 프로그램을 작성하시오.
해당하는 부분집합이 없는 경우 0을 출력한다. 모든 부분 집합을 만들어 답을 찾아도 된다.
예를 들어 N = 3, K = 6 경우, 부분집합은 { 1, 2, 3 } 경우 1가지가 존재한다.
[입력]
첫 줄에 테스트 케이스 개수 T가 주어진다. ( 1 ≤ T ≤ 50 )
테스트 케이스 별로 부분집합 원소의 수 N과 부분 집합의 합 K가 여백을 두고 주어진다. ( 1 ≤ N ≤ 12, 1 ≤ K ≤ 100 )
[출력]
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.