#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <queue>
#include <bitset>
#include <stack>
#include <map>
using namespace std;
#define int long long
#define fo(a,b,c) for(int a=b;a<=c;a++)
#define of(a,b,c) for(int a=b;a>=c;a--)
const int N=2e5+10;
int t,n,m,p,fc[N]={1},in[N]={0,1};
int C(int n,int m,int p){
if(m==0) return 1;
if(n<p) return fc[n]*in[fc[m]*fc[n-m]%p]%p;
return C(n/p,m/p,p)*C(n%p,m%p,p)%p;
}
signed main(){
cin>>t;
while(t--){
cin>>n>>m>>p;
memset(fc,0,sizeof(fc));
memset(in,0,sizeof(in));
fc[0]=in[1]=1;
fo(i,1,N-1) fc[i]=fc[i-1]*i%p,in[i+1]=(p-p/(i+1))*in[p%(i+1)]%p;
cout<<C(n+m,n,p)%p<<endl;
}
return 0;
}