나이트의 이동 2

2n x 2n 체스판의 왼쪽 위 칸에서 출발한 나이트가 k번 이하의 이동으로 네 모서리 중 한 곳에 도착하는 경로의 수를 1000007로 나눈 나머지를 구합니다.

어려움8행렬동적 계획법그래프아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

크기가 2n×2n2n \times 2n인 체스판의 가장 왼쪽 위 칸에 나이트가 하나 놓여 있다. 나이트는 한 번 움직일 때 한 방향으로 두 칸, 그와 수직인 방향으로 한 칸 이동한다. 즉 행과 열이 각각 (±1,±2)(\pm 1, \pm 2) 또는 (±2,±1)(\pm 2, \pm 1)만큼 바뀐다. 체스판 밖으로 나가는 이동은 할 수 없다.

모서리 칸은 체스판의 네 꼭짓점에 있는 칸, 즉 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래 칸이다.

나이트를 최대 kk번 움직여서 모서리 칸에 도착하는 방법의 수를 구하는 프로그램을 작성하시오. 이동 횟수가 다르거나 지나는 칸의 순서가 다르면 서로 다른 방법으로 센다. 나이트는 처음부터 왼쪽 위 모서리에 있으므로 한 번도 움직이지 않는 것도 방법 하나로 센다.

정리하면 0tk0 \le t \le k인 모든 tt에 대해, 왼쪽 위 칸에서 출발해 정확히 tt번 움직인 뒤 모서리 칸에서 끝나는 경로의 개수를 구하고, 그 값을 모두 더한다. 같은 칸을 여러 번 지나도 되고, 모서리 칸에 들어갔다가 다시 나와도 된다.

입력

첫째 줄에 테스트 케이스의 개수 TT (1T501 \le T \le 50)가 주어진다.

이어지는 TT개의 줄에 테스트 케이스가 한 줄씩 주어진다. 각 줄에는 두 정수 nnkk가 공백으로 구분되어 주어진다. (2n242 \le n \le 24, 1k1091 \le k \le 10^9)

출력

각 테스트 케이스마다 방법의 수를 10000071000007로 나눈 나머지를 한 줄에 출력한다.