#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
using namespace std;
#define LL long long
#define ULL unsigned long long
#define del(a,b) memset(a,b,sizeof(a))
#define PI 3.14159265358
const int INF=99999999;
ULL exp_mod(ULL a,ULL b,ULL p){
ULL res=1;
while(b!=0){
if(b&1)res=(res*a)%p;
a=(a*a)%p;
b>>=1;
}
return res;
}
ULL Comb(ULL a,ULL b,ULL p){
if(a<b)return 0;
if(a==b)return 1;
if(b>a-b)b=a-b;
LL ans=1,ca=1,cb=1;
for(LL i=0;i<b;i++){
ca=(ca*(a-i))%p;
cb=(cb*(b-i))%p;
}
ans=(ca*exp_mod(cb,p-2,p))%p;
return ans;
}
ULL Lucas(ULL n,ULL m,int p){
ULL ans=1;
while(n&&m&&ans){
ans=(ans*Comb(n%p,m%p,p))%p;
n/=p;
m/=p;
}
return ans;
}
int T,P;
LL N,M;
int main(){
scanf("%d",&T);
while(T--){
scanf("%lld%lld%d",&N,&M,&P);
printf("%lld\n",Lucas(N+M,M,P));
}
}