#include <bits/stdc++.h>
using namespace std;
long long powe(long long int a,long long int b)
{
long long ans,p;
ans=1;
p=a;
while(b>0)
{
if(b&1)
{
ans=(ans*p)%1000000007;
}
p=(p*p)%1000000007;
b=b>>1;
}
return ans;
}
int main() {
// your code goes here
long long int t,n,i,j,k,g,h,maxi,sum_so_far,fl,st,en,pst,pen,ps;
map<long long int,long long int> ma;
vector<long long> v(10000001,0),va;
ios::sync_with_stdio(0);
cin.tie(0);
cin>>t;
while(t--)
{
cin>>n>>k;
h=max(k,n-k);
ps=1;
for(i=n;i>h;i--)
{
ps=ps%1000000007;
i=i%1000000007;
ps=(ps*i)%1000000007;
ps=ps%1000000007;
}
ps=ps%1000000007;
g=min(k,n-k);
for(i=1;i<=g;i++)
{
en=powe(i,1000000005);
en=en%1000000007;
ps=ps%1000000007;
ps=ps*en;
// cout<<ps<<" ";
ps=ps%1000000007;
}
cout<<ps<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpsb25nIGxvbmcgcG93ZShsb25nIGxvbmcgaW50IGEsbG9uZyBsb25nIGludCBiKQp7Cglsb25nIGxvbmcgYW5zLHA7CglhbnM9MTsKCXA9YTsKCXdoaWxlKGI+MCkKCXsKCQlpZihiJjEpCgkJewoJCQlhbnM9KGFucypwKSUxMDAwMDAwMDA3OwoJCX0KCQlwPShwKnApJTEwMDAwMDAwMDc7CgkJYj1iPj4xOwoJfQoJcmV0dXJuIGFuczsKfQoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglsb25nIGxvbmcgaW50IHQsbixpLGosayxnLGgsbWF4aSxzdW1fc29fZmFyLGZsLHN0LGVuLHBzdCxwZW4scHM7CgltYXA8bG9uZyBsb25nIGludCxsb25nIGxvbmcgaW50PiBtYTsKCXZlY3Rvcjxsb25nIGxvbmc+IHYoMTAwMDAwMDEsMCksdmE7CgkKCWlvczo6c3luY193aXRoX3N0ZGlvKDApOwoJY2luLnRpZSgwKTsKCWNpbj4+dDsKCXdoaWxlKHQtLSkKCXsKCQljaW4+Pm4+Pms7CgkJaD1tYXgoayxuLWspOwoJCXBzPTE7CgkJZm9yKGk9bjtpPmg7aS0tKQoJCXsKCQkJcHM9cHMlMTAwMDAwMDAwNzsKCQkJaT1pJTEwMDAwMDAwMDc7CgkJCXBzPShwcyppKSUxMDAwMDAwMDA3OwoJCQlwcz1wcyUxMDAwMDAwMDA3OwoJCX0KCQlwcz1wcyUxMDAwMDAwMDA3OwoJCWc9bWluKGssbi1rKTsKCQlmb3IoaT0xO2k8PWc7aSsrKQoJCXsKCQkJZW49cG93ZShpLDEwMDAwMDAwMDUpOwoJCQllbj1lbiUxMDAwMDAwMDA3OwoJCQlwcz1wcyUxMDAwMDAwMDA3OwoJCQlwcz1wcyplbjsgCgkJCS8vIGNvdXQ8PHBzPDwiICI7CgkJCXBzPXBzJTEwMDAwMDAwMDc7CgkJfQoJCWNvdXQ8PHBzPDwiXG4iOwoJCQoJfQoJcmV0dXJuIDA7Cn0=