#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1e4 + 10;
const int mod = 1e9 + 7;
long long dp[maxn], c[maxn][110], n1[maxn];
int T, n, k;
int main() {
dp[0] = 1, dp[1] = 0, dp[2] = 1;
for (int i = 3; i <= 10000; i++) dp[i] = (dp[i-1]+dp[i-2])*(i-1)%mod;
c[1][0] = c[1][1] = 1;
for (int i = 2; i <= 10000; i++) {
c[i][0] = 1;
for (int j = 1; j <= 100; j++) {
c[i][j] = (c[i-1][j]+c[i-1][j-1])%mod;
}
}
n1[1] = 1;
for (int i = 2; i <= 10000; i++) n1[i] = n1[i-1]*i%mod;
scanf("%d", &T);
while (T--) {
scanf("%d %d", &n, &k);
long long ans = 0;
for (int i = 0; i < k; i++) ans = (ans + c[n][i]*dp[n-i]%mod)%mod;
printf("%lld\n", (n1[n]-ans+mod)%mod);
}
return 0;
}