#include using namespace std; const int MOD = 1e9+7; void add(int &a, int b) { a += b; if (a >= MOD) a -=MOD; } int dp[1010][1010][11]; int main() { memset(dp, 0, sizeof(dp)); dp[0][0][0] = 1; for (int i = 0; i <= 1000; i++) for (int j = 0; j <= i; j++) for (int k = 0; k <= min(10, j); k++) { if (dp[i][j][k] == 0) continue; add(dp[i+1][j][0], dp[i][j][k]); if (k < 10) { add(dp[i+1][j+1][k+1], (long long)dp[i][j][k]*i%MOD); } } int T; scanf("%d", &T); while (T--) { int n, m; scanf("%d%d", &n, &m); printf("%d\n", dp[n][m][0] == 0 ? -1 : dp[n][m][0]); } return 0; }