#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
i64 euler(i64 x){//求p的欧拉函数
i64 res=x;
for(i64 i=2;i<=x/i;i++){
if(x%i==0){
res=res-res/i;
while(x%i==0){
x/=i;
}
}
}
if(x>1) res=res-res/x;
return res;
}
i64 qkpow(i64 a,i64 n,i64 mod){//求快速幂
i64 res=1;
while(n){
if(n&1) res=(res%mod*a%mod)%mod;
a=(a%mod*a%mod)%mod;
n>>=1;
}
return res;
}
int main(){
const i64 p = 1e9+7;
i64 p_euler=euler(p);
int t;cin>>t;
while(t--){
i64 a,b,c;cin>>a>>b>>c;
//a^n mod p = a^(n mod p的欧拉函数 + p的欧拉函数) mod p
i64 ans=qkpow(a , qkpow(b,c,p_euler)+p_euler ,p);
cout<<ans<<'\n';
}
return 0;
}