//数学题就是很考验思维的灵活性。。有收获,长见识。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn = 1000 + 5;
vector<int> v[maxn];
unsigned long long a, n, mod;
void init()
{
for(int i = 2; i <= 1000; ++i)
{
int a = 0, b = 1, c = 1;
v[i].push_back(0);
v[i].push_back(1);
v[i].push_back(1);
while(!(b==0 && c==1))
{
a = b;
b = c;
c = (a % i + b % i)%i;
v[i].push_back(c);
}
v[i].pop_back();
v[i].pop_back();
}
return ;
}
unsigned long long pow_mod(unsigned long long a, unsigned long long n, unsigned long long m)
{
if(n==0) return 1;
unsigned long long x = pow_mod(a, n/2, m);
unsigned long long ans = (x%m)*(x%m)%m;
if(n%2==1) ans=(ans%m)*(a%m)%m;
return ans;
}
int main()
{
int T;
cin >>T;
init();
while(T--)
{
cin >> a >> n >>mod;
if(mod == 1) { cout << 0 << endl; continue; }
unsigned long long m = v[mod].size();
unsigned long long ans = pow_mod(a, n, m);
cout << v[mod][ans] << endl;
}
}