#include<bits/stdc++.h>
using namespace std;
const int MAXN=1000005,mod=1000000007;
long long n,x,y,d[MAXN];
long long combination(int a, int b){
if (b > a || b < 0) return 0;
if (b == 0 || a == b) return 1;
long long result = 1;
for(int i = 0; i < b; ++i){
result *= (a - i);
result /= (i + 1);
}
return result;
}
void prework(){
d[1]=0;
d[2]=1;
d[3]=2;
for(int i=4;i<=MAXN;i++){
d[i]=(i-1)*(d[i-1]+d[i-2]);
}
}
int main(){
scanf("%lld",&n);
prework();
for(int i=0;i<n;i++){
scanf("%lld%lld",&x,&y);
if (x - y == 1) printf("0\n");
else if (y == x) printf("1\n");
else if (y == 0) printf("%lld\n",d[x]);
else{
printf("%lld\n",(combination(x,y)*d[x-y])%mod);
}
}
return 0;
}