#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+9;
int n,m,p;
int f[maxn],g[maxn];
ll qpow(long long bas,long long ind){
long long res=1;
while(ind){
if(ind%2!=0) res*=bas%p;
ind/=2;
bas*=bas%p;
}
return res;
}
ll getC(int a,int b){
if(b>a) return 0;
return f[a]%p*g[b]%p*g[a-b]%p;
}
ll lucas(int a,int b){
if(b==0) return 1;
return lucas(a/p,b/p)%p*getC(a%p,b%p)%p;
}
void init(int P){
f[0]=1;
g[0]=1;
for(int i=1;i<=P;i++){
f[i]=f[i-1]*i%P;
g[i]=g[i-1]*qpow(i,p-2)%P;
}
return ;
}
int main(){
int T;
cin>>T;
while(T--){
cin>>n>>m>>p;
init(p);
cout<<lucas(n,m)<<endl;
}
return 0;
}