#include<cstdio>#include<iostream>usingnamespacestd;
typedeflonglong ll;
ll n, m;
ll p;
ll f[100005];
void InitFac() {
f[0] = 1;
for (int i = 1; i < p; ++i) f[i] = (f[i - 1] * i) % p;//预处理阶乘
}
ll PowMod(ll a,ll b) {//快速幂
ll res = 1;
while (b) {
if (b & 1) res = res * a % p;
a = a * a % p;
b >>= 1;
}
return res;
}
ll lucas(){
ll res = 1;
while (n && m) {
ll a = n % p, b = m % p;
if (a < b) return0;
res = (res * f[a] * PowMod(f[b] * f[a - b] % p, p - 2)) % p;//乘法逆元
n /= p;
m /= p;
}
return res;
}
int main() {
int T;
cin >> T;
while (T--) {
cin >> n >> m >> p;
n += m;//C(n + m, m)组合数
InitFac();
cout << lucas() << endl;
}
return0;
}