求大佬改错
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstdlib>
using namespace std;
const int maxn=1e5+10;
long long fac[maxn],N,M,p;
queue<long long>ans;
long long pow(long long a,long long b)
{
long long ans=0;
for(;b;b=b/2,a=a*a%p)
{
if(b&1)ans=ans*a%p;
}
return ans;
}
long long c(long long n,long long m)
{
if(m>n)return 0;
return (fac[n]*pow(fac[m],p-2)%p*pow(fac[n-m],p-2)%p);
}
long long Lucas(long long n,long long m)
{
if(!m)return 1;
return c(n%p,m%p)*Lucas(n/p,m/p)%p;
}
int main()
{
ios::sync_with_stdio(false);
int T,i;
cin>>T;
while(T--)
{
cin>>N>>M>>p;
fac[0]=fac[1]=1;
for(i=2;i<=p;i++)fac[i]=fac[i-1]*i%p;
ans.push(Lucas(N+M,N));
}
while(!ans.empty())
{
cout<<ans.front()<<endl;
ans.pop();
}
return 0;
}