#include int main() { int T; cin >> T; for (int x = 0; x> N >> M; if (M < N) cout << "0\n"; else { long long A[N][N][N][M+1]; // A[i][j][k][l] represents the number of l-digit numbers that // contain all the digits from i to j and end with k (and do not // start with 0). for (int i = 0; i < N; i++) // just make sure it is initialized to 0. for (int j = 0; j < N; j++) for (int k = 0; k < N; k++) for (int l = 1; l <= M; l++) A[i][j][k][l] = 0; // compute base case (l = 1) for (int i = 1; i 0 ? A[i][j][k-1][l-1] : 0) + (k < N-1 ? A[i][j][k+1][l-1] : 0)) % 1000000007; } if (i+1 <= j) A[i][j][i][l] += A[i+1][j][i+1][l-1]; if (j > 0) A[i][j][j][l] += A[i][j-1][j-1][l-1]; } } } long long res = 0; for (int l = N; l <= M; l++) for (int k = 0; k < N; k++) res = (res + A[0][N-1][k][l]) % 1000000007; cout << res << "\n"; } } }