#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<set>
#include<queue>
#include<algorithm>
#include<stack>
#define rez(i,x,y) for(int i=x;i>=y;i--)
#define res(i,x,y) for(int i=x;i<=y;i++)
#define INF 2100000000
#define ll long long
#define clr(x) memset(x,0,sizeof(x))
using namespace std;
long long gcd( long long a, long long b ) {
return b == 0 ? a : gcd( b, a % b );
}
long long lcm( long long a, long long b ) {
return a / gcd(a,b) * b;
}
// gcd(a,b) = a * x + b * y
long long exgcd( long long a, long long b, long long &x, long long &y ) {
if( b == 0 ) {
x = 1;
y = 0;
return a;
} else {
long long x0, y0;
long long cd = exgcd( b, a % b, x0, y0 );
x = y0;
y = x0 - (a/b) * y0;
return cd;
}
}
long long exe( long long d,long long p) {
int x1,x2,x3,y1,y2,y3,t1,t2,t3,k;
if(d>p)d=d+p-(d=p);
x1=1,x2=0,x3=p;
y1=0,y2=1,y3=d;
while(1){
if(y3==0)return 0;
if(y3==1)return y2;
k=x3/y3;
t1=x1-k*y1,t2=x2-k*y2,t3=x3-k*y3;
x1=y1,x2=y2,x3=y3;
y1=t1,y2=t2,y3=t3;
}
}
long long T,n,b,p;
long long Abs(long long a){
return a<0?-a:a;
}
int main(){//b*ans=a(mod p)
freopen("calc.in","r",stdin);
freopen("calc.out","w",stdout);
cin>>T;
while(T--){
cin>>n>>b>>p;
long long x=exe(b,p);
x=(x%p)+p;
cout<<n*x%p<<endl;
}
return 0;
}
水掉了,大家不要……