https://vjudge.net/contest/246493#problem/A
#include<iostream>
#include<cstdio>
typedef unsigned long long ll;
using namespace std;
ll a,b;
int f[1005*1005];
int main(){
int t,n,i;
scanf("%d",&t);
while(t--){
cin>>a>>b>>n;
if((n==1)||(a==0))
printf("0\n");
else{
f[1]=f[2]=1;
int flag=n*n;
for(i=3;i<=flag+10;i++){
f[i]=(f[i-1]+f[i-2])%n;
if((f[i-1]==f[1])&&(f[i]==f[2])){
i=i-2;
break;
}
}
int temp=1;
a=a%i;
while(b){
if(b&1)
temp=(temp*a)%i;
a=(a*a)%i;
b=b/2;
}
printf("%d\n",f[temp]);
}
}
return 0;
}