qwq
qwq
qwq
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define inf 0x3f3f3f3f
#define mian main
using namespace std;
const ll mod=1000000007;
ll f[1000010],cf[1000010],zs[1000010];
ll n,m,t;
ll power(ll a,ll b)
{
ll ans=1;
while(b)
{
if(b&1) ans=ans*a%mod;
a=a*a%mod;
b>>=1;
}
return ans;
}
void azaz()
{
f[0]=1;
for(ll i=1;i<1000000;i++)
{
f[i]=f[i-1]*i%mod;
cf[i]=power(f[i],mod-2);
}
zs[1]=0;
zs[2]=1;
zs[3]=2;
for(ll i=4;i<1000010;i++) zs[i]=(i-1)*(zs[i-1]+zs[i-2])%mod;
}
int mian()
{
cin>>t;
azaz();
for(ll i=1;i<=t;i++)
{
ll n,m;
scanf("%lld%lld",&n,&m);
if(n-m==1) printf("0\n");
else if(m==n) printf("1\n");
else if(m==0) printf("%lld\n",zs[n]);
else printf("%lld\n",f[n]*cf[m]%mod*cf[n-m]%mod*zs[n-m]%mod);
}
return 0;
}