#include<bits/stdc++.h>
using namespace std;
const int mod= 1e9+7;
long long f[2000005];
long long qpow(long long a,long long b){
long long s=1;
while(b){
if(b&1) s=s*a%mod;
a=a*a%mod;
b>>=1;
}
return s;
}
signed main(){
long long t;
cin>>t;
f[0]=1;
f[1]=1;
f[2]=2;
for(int i=3; i<=1e6; i++){
f[i]=f[i-1]*i%mod;
}
while(t--){
long long n,k;
cin>>n>>k;
if(log2(n)<=k){
cout<<f[n]<<endl;
continue;
}
else if(k==0){
cout<<1<<endl;
continue;
}
cout<<((qpow(qpow(f[n/(1<<k)],mod-2),n-(n%(1<<k))))%mod*(qpow(qpow(f[n/(1<<k)+1],mod-2),n%(1<<k))%mod)*f[n])%mod<<endl;
}
return 0;
}