/*UVa11582 - Colossal Fibonacci Numbers!
---首先所有数都是对n取模运算的,设F[i]=f(i)%n,则当二元组(F[i],F[i]+1)重复时整个序列就会出现周期循环,
---对n取模可知最多有n种余数,而二元组合最多有n^2种,所以只需要最多打长度为n^2的表就可以找到周期T。
---需要注意以下几点:
1)n==1时候需要特判,所有数都可以整除0
2)数据范围n<2^64,所以要用64位无符号整数来存取
*/
#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
using namespace std;
typedef unsigned long long ULL;
const int maxn = 1000+10;
ULL F[maxn*maxn];
ULL quick_pow_mod(ULL a,ULL n,ULL m){
if (n == 0)return 1;
ULL res = 1;
while (n > 0){
if (n & 1)
res = res*a%m;
a = (a%m)*(a%m)%m;
n >>= 1;
}
return res;
}
int main(){
ULL a, b, n,t,T,i;
cin >> t;
while (t--){
cin >> a >> b >> n;
F[0] = 0; F[1] = 1;
if (n == 1){ printf("0\n"); continue; }
for (i = 2;i<n*n; i++){
F[i] = (F[i - 1] + F[i - 2]) % n;
if (F[i] == 1 && F[i - 1] == 0)break; //找到周期
}
T = i - 1; //周期
ULL id = quick_pow_mod(a, b, T);
cout << F[id] << endl;
}
return 0;
}