rt,WA+RE
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
#define int long long
int t,n,m,p;
int f[maxn],g[maxn];
int qpow(int base,int q)
{
int res=1;
while(q)
{
if(q&1)
{
res=base*res%p;
}
q/=2;
base=base*base%p;
}
return res;
}
void init()
{
f[0]=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 getC(int n,int m)
{
return f[n]*g[m]*g[n-m]%p;
}
int lucas(int x,int y)
{
if(y==0)
{
return 1;
}
return lucas(x/p,y/p)*getC(x%p,y%p)%p;
}
signed main()
{
cin>>t;
while(t--)
{
init();
cin>>n>>m>>p;
cout<<lucas(n+m,n)<<endl;
}
return 0;
}