ll f(ll q,ll n)//递归求快速幂
{
if(n==1)return q;
if(n&1)
return q*f(q,n-1);
else
return f(q,n/2)*f(q,n/2);
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll q,n,p;
ll tpow(ll a,ll b,ll p)
{
ll res=1;
for(;b;b>>=1)
{
if(b&1)
{
res=(res*a)%p;
}
a=(a*a)%p;
}
return res;
}
long long T(long long n)//等比数列快速求和核心公式
{
if(n == 1) return q;
if(n % 2 == 0)
{
return (tpow(q,n/2,p)+1)%p * T(n/2)%p;
}
else
{
return (tpow(q,n,p) + T(n-1))%p;
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>q>>n>>p;
cout<<T(n)<<endl;
}
return 0;
}