#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll fact[1000000];
int pwr(int x,int p,int mod){
ll t = 1,a=x;
while(p){
//condition need to be added for case of odd
if(p&1) t = (t*a)%mod;
a=(a*a)%mod;
p=p>>1;
}
return t;
}
ll abc(int n,int r,int MOD){
ll tem=(fact[r]*fact[n-r])%MOD;
//by fermat`s theorem
//the inverse is found by (x^(p-2))%p
tem=pwr(tem,MOD-2,MOD);
return (tem*fact[n])%MOD;
}
ll xyz(ll n,ll m,int p){
//changed if condition
if (n==0 && m==0) return 1;
int ni=n%p;
int mi=m%p;
return xyz(n/p,m/p,p)*abc(ni,mi,p)%p;
}
ll C(ll n,ll r,int MOD){
fact[0]=1;
for(int i=1;i<MOD;i++) fact[i]=(i*fact[i-1])%MOD;
return xyz(n,r,MOD);
}
int main(){
int t;
cin>>t;
while(t--){
ll n,k;
int p;
cin>>n>>k>>p;
cout<<C(n,k,p)<<endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmxsIGZhY3RbMTAwMDAwMF07CmludCBwd3IoaW50IHgsaW50IHAsaW50IG1vZCl7CiAgICBsbCB0ID0gMSxhPXg7CiAgICB3aGlsZShwKXsKICAgICAgICAvL2NvbmRpdGlvbiBuZWVkIHRvIGJlIGFkZGVkIGZvciBjYXNlIG9mIG9kZAogICAgICAgIGlmKHAmMSkgdCA9ICh0KmEpJW1vZDsKICAgICAgICBhPShhKmEpJW1vZDsKICAgICAgICBwPXA+PjE7CiAgICB9CiAgICByZXR1cm4gdDsKfQpsbCBhYmMoaW50IG4saW50IHIsaW50IE1PRCl7CiAgICBsbCB0ZW09KGZhY3Rbcl0qZmFjdFtuLXJdKSVNT0Q7CiAgICAvL2J5IGZlcm1hdGBzIHRoZW9yZW0gCiAgICAvL3RoZSBpbnZlcnNlIGlzIGZvdW5kIGJ5ICh4XihwLTIpKSVwCiAgICB0ZW09cHdyKHRlbSxNT0QtMixNT0QpOwogICAgcmV0dXJuICh0ZW0qZmFjdFtuXSklTU9EOwp9CmxsIHh5eihsbCBuLGxsIG0saW50IHApewogICAgLy9jaGFuZ2VkIGlmIGNvbmRpdGlvbgogICAgaWYgKG49PTAgJiYgbT09MCkgcmV0dXJuIDE7CiAgICBpbnQgbmk9biVwOwogICAgaW50IG1pPW0lcDsKICAgIHJldHVybiB4eXoobi9wLG0vcCxwKSphYmMobmksbWkscCklcDsKfQpsbCBDKGxsIG4sbGwgcixpbnQgTU9EKXsKICAgIGZhY3RbMF09MTsKICAgIGZvcihpbnQgaT0xO2k8TU9EO2krKykgZmFjdFtpXT0oaSpmYWN0W2ktMV0pJU1PRDsKICAgIHJldHVybiB4eXoobixyLE1PRCk7Cn0KaW50IG1haW4oKXsKICAgIGludCB0OwogICAgY2luPj50OwogICAgd2hpbGUodC0tKXsKICAgICAgICBsbCBuLGs7CiAgICAgICAgaW50IHA7CiAgICAgICAgY2luPj5uPj5rPj5wOyAKICAgICAgICBjb3V0PDxDKG4sayxwKTw8ZW5kbDsKICAgIH0gICAKfQ==