한 교수가 보통 컴퓨터보다 80억 배 빠른 원자 컴퓨터를 만들었다. 이 컴퓨터는 값을 특수한 메모리에 저장하는데, 이 메모리는 한 비트가 -1, 0, 1 세 가지 상태 중 하나를 나타낸다.
y비트 메모리에 저장된 비트를 앞에서부터 dy−1,dy−2,…,d1,d0이라고 하면, 메모리가 나타내는 값은 다음과 같다.
∑i=0y−1di⋅2i
각 di는 -1, 0, 1 중 하나다. 예를 들어 (1)(−1)(0)2은 1⋅4+(−1)⋅2+0⋅1=2를 나타낸다. 비트 수는 항상 y로 고정이고, 앞쪽 비트가 0인 표현도 서로 다른 저장 방법으로 센다.
저장하려는 정수 x와 메모리의 비트 수 y가 주어질 때, x를 y비트에 저장하는 방법의 수를 구하는 프로그램을 작성하시오.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. (T≥1)
다음 T개 줄에 각각 두 정수 xi와 yi가 주어진다. xi는 메모리에 저장하려는 값이고, yi는 메모리의 비트 수다. (−2000000000≤xi≤2000000000, 1≤yi≤20)
T개 줄을 출력한다. i번째 줄에는 xi를 yi비트에 저장하는 방법의 수를 출력한다.