不知道错哪了qwq
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
const int maxn = 1e5+5;
ll f[maxn], g[maxn];
il ll read()
{
ll num=0; int f=1;
char c=getchar();
while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9') {num=(num<<3)+(num<<1)+(c^48);c=getchar();}
return num*f;
}
ll pok(ll a,int b,int p)
{
ll res = 1;
while(b)
{
if(b & 1) res=res*a%p;
a=a*a%p;
b>>=1;
}
return res;
}
il void init(int p)
{
f[0]=g[0]=1;
for(int i=1;i<=p;i++)
{
f[i]=f[i-1]*i%p;
g[i]=g[i-1]*pok(i,p-2,p)%p;
}
}
il ll getC(int n, int m, int p)
{
return f[n]*g[m]*g[n-m]%p;
}
il int lucas(ll n,ll m,int p)
{
if(!m) return 1;
return lucas(n/p,m/p,p)*getC(n%p,m%p,p)%p;
}
int main()
{
int t, n, m, p;
t=read();
while(t--)
{
n=read();m=read();p=read();
init(p);
printf("%d\n",lucas(n+m,n,p));
}
return 0;
}