#include<cstdio>
#include<cctype>
#define int long long
using namespace std;
const int N =1e5+10;
int t,n,m,p;
int a[N],b[N];//两个非负整数
inline int read(){
int f=0,x=0;
char ch=getchar();
while(!isdigit(ch)) f|=(ch=='-'),ch=getchar();
while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return f?-x:x;
}
inline int lucas(int x,int y){
if(x<y) return 0;
else if(x<p) return b[x]*a[y]*a[x-y]%p;
else return lucas(x/p,y/p)*lucas(x%p,y%p)%p;
}
signed main(){
t=read();
for(register int o=1;o<=t;++o){
n=read(),m=read(),p=read();
a[0]=a[1]=b[0]=b[1]=1;
for(register int i=2;i<=n+m;++i) b[i]=b[i-1]*i%p;
for(register int i=2;i<=n+m;++i) a[i]=((-p/i*a[p%i])%p+p)%p;
for(register int i=2;i<=n+m;++i) a[i]=a[i-1]*a[i]%p;
printf("%lld\n",lucas(n+m,m));
}
return 0;
}
//C(n,m+n)%p=C(n%p,(n+m)%p)*C(n/p,(n+m)/p)%p;