#include using namespace std; #define rep(i,n) for(ll i=0;i=0;i--) #define perl(i,r,l) for(ll i=r-1;i>=l;i--) #define fi first #define se second #define pb push_back #define ins insert #define pqueue(x) priority_queue,greater> #define all(x) (x).begin(),(x).end() #define CST(x) cout<; using vvl=vector>; using pl=pair; using vpl=vector; using vvpl=vector; const ll MOD=1000000007; const ll MOD9=998244353; const int inf=1e9+10; const ll INF=4e18; const ll dy[8]={1,0,-1,0,1,1,-1,-1}; const ll dx[8]={0,1,0,-1,1,-1,1,-1}; template inline bool chmax(T &a, T b) { return ((a < b) ? (a = b, true) : (false)); } template inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); } map factor(long long n) { map ret; ll t=n; for (long long i = 2; i * i <= n; i++) { while (t % i == 0) { ret[i]++;t/=i; } } if(t!=1)ret[t]++; return ret; } ll modpow(ll a,ll n, ll mod) { a%=mod;if(a==0)return 0; ll res = 1; while (n > 0) { if (n & 1) res = res * a % mod; a = a * a % mod; n >>= 1; } return res; } random_device rd; mt19937 mt(rd()); ll primitive_root(ll n){ uniform_int_distribution<> rand(2,n-1); auto f=factor(n-1); while(1){ ll r=rand(mt); bool ok=true; for(auto q:f){ if(modpow(r,(n-1)/q.first,n)==1)ok=false; } if(ok)return r; } } ll euler_phi(ll n) { ll ret = n; for(ll i = 2; i * i <= n; i++) { if(n % i == 0) { ret -= ret / i; while(n % i == 0) n /= i; } } if(n > 1) ret -= ret / n; return ret; } void solve(){ ll p,k,a;cin >> p >> k >> a; /*if(gcd(k,p-1)!=1){ cout << -1 << endl;return; }*/ ll e=0; ll r=primitive_root(p); { unordered_map mp; ll now=1; for(ll i=0;i<32000;i++){ mp[now]=i; now=now*r%p; } ll tmp=1; ll invnow=modpow(now,p-2,p); for(ll i=0;i<=32000;i++){ ll ap=tmp*a%p; if(mp.count(ap)){ e=mp[ap]+i*32000;break; } tmp*=invnow; } } //cout << r <<" " << e << endl; //cout << modpow(r,e,p) << endl; //x*k=e mod p-1 を求める ll x=0; { unordered_map mp; ll now=0; for(ll i=0;i<32000;i++){ mp[now]=i; now=(now+k)%(p-1); } ll tmp=0; for(ll i=0;i<32000;i++){ ll ap=(e-tmp+(p-1))%(p-1); if(mp.count(ap)){ x=i*32000+mp[ap]; break; } tmp=(tmp+now)%(p-1); } } //cout << x << endl; ll ans=modpow(r,x,p); if(modpow(ans,k,p)!=a)cout << -1 << endl; else cout << ans << endl; } int main(){ ll t;cin >> t; while(t--){ solve(); } }