//1<=b<=a<=1e5 ,Cab mod (1e9+7)
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
const int N=100010,mod=1e9+7;
int fact[N],infact[N];
int qmi(int a,int b,int m)
{
int ans=1;
while(b)
{
if(b&1) ans=(ll)ans*a%m;
a=(ll)a*a%m;
b>>=1;
}
return ans;
}
int main()
{
fact[0]=infact[0]=1;
for(int i=1;i<N;i++)
{
fact[i]=(ll)fact[i-1]*i%mod;//求阶乘
infact[i]=(ll)infact[i-1]*qmi(i,mod-2,mod)%mod;//求i阶乘逆元
}
int n;
scanf("%d", &n);
while(n--)
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n", (ll)fact[a]*infact[b]%mod*infact[a-b]%mod);
}
return 0;
}
//1≤b≤a≤1e18,
//1≤m≤1e5
//卢卡斯定理
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
int qmi(int a,int b,int m)
{
int ans=1;
while(b)
{
if(b&1) ans=(ll)ans*a%m;
a=(ll)a*a%m;
b>>=1;
}
return ans;
}
int C(int a,int b,int m)
{
if(b>a) return 0;
int ans=1;
for(int i=1,j=a;i<=b;i++,j--)
{
ans=(ll)ans*j%m;
ans=(ll)ans*qmi(i,m-2,m)%m;
}
return ans;
}
int lucas(ll a,ll b,int m)
{
if(a<m&&b<m) return C(a,b,m);
return (ll)C(a%m,b%m,m)*lucas(a/m,b/m,m)%m;
}
int main()
{
int n;
cin>>n;
while(n--)
{
ll a,b;
int m;
cin>>a>>b>>m;
cout<<lucas(a,b,m)<<endl;
}
return 0;
}