#include <bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr int N = 1e5 + 5;
#define int long long
int p, n, m;
int inv[N], fac[N];
int ksm(int a, int b, int p)
{
int res = 1;
while(b)
{
if(b & 1)res = res * a % p;
a = a * a % p;
b >>= 1;
}
return res;
}
int getC(int n, int m, int p)
{
return fac[n] * inv[m] % p * inv[n - m] % p;
}
int lucas(int n, int m, int p)
{
if(m == 0)return 1;
return lucas(n / p, m / p, p) * getC(n % p, m % p, p) % p;
}
void build(int p)
{
inv[0] = fac[0] = 1;
for(int i = 1; i <= p; ++ i)
{
fac[i] = fac[i - 1] * i % p;
inv[i] = inv[i - 1] * ksm(i, p - 2, p) % p;
}
}
void Sakuya()
{
cin >> n >> m >> p;
build(p);
cout << lucas(n + m, n, p) % p << '\n';
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
for (cin >> T; T -- ; )
Sakuya();
}