Problem Statement :
You are situated in an N dimensional grid at position (x1,x2,...,xN). The dimensions of the grid are (D1,D2,...DN). In one step, you can walk one step ahead or behind in any one of the N dimensions. (So there are always 2×N possible different moves). In how many ways can you take M steps such that you do not leave the grid at any point? You leave the grid if at any point xi, either xi≤0 or xi>Di.
Input Format
The first line contains the number of test cases T. T test cases follow. For each test case, the first line contains N and M, the second line contains x1,x2,…,xN and the 3rd line contains D1,D2,…,DN.
Output Format
Output T lines, one corresponding to each test case. Since the answer can be really huge, output it modulo 1000000007.
Constraints
1≤T≤10
1≤N≤10
1≤M≤300
1≤Di≤100
1≤xi≤Di
Sample Input
1
2 3
1 1
2 3
Sample Output
12
If this was in 1D the solution can be like this : solve(i+1)+solve(i-1);
in 2D : solve(i+1,j)+solve(i-1,j)+solve(i,j+1)+solve(i,j-1); How can i program it for N Dimensions? Is their some general steps for making recursion statements like above which could help in making recursive statements
Most solutions which i saw are in bottom up or top down manner i am not able to understand them ? is their any way to understand them ,as i have always practiced dp using recursion + memoization i find it hard to understand them