Link to this code: https://cses.fi/paste/818f3827d9b37859131da6/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class Temp {
	//-------------------
	public static final int MOD = (int) (1e9+7);
	// ------------------
	 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st;
    PrintWriter out = new PrintWriter(System.out);
    
    
    String next() {
        while (st == null || !st.hasMoreElements()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }
 
    int nextInt() {
        return Integer.parseInt(next());
    }
 
    long nextLong() {
        return Long.parseLong(next());
    }
 //------------------
    public static void main(String[] args) {
        Temp ob = new Temp();
        ob.run();
    }
    private void run() {
    	int n = nextInt();
    	while(n-->0) {
    		int a = nextInt();
    		int b = nextInt();
    		int c = nextInt();
    		out.println(exp(a, exp(b,c, MOD-1), MOD));//fermat theorem
    	}
//    	out.println();
    	out.close();
    }
    private long exp(long a, long b, int mod) {
    	
    	long res =1;
    	while(b>0) {
    		if((b%2)==1) {
    			res *=a;
    			res %=mod;
    		}
    		a = a*a;
    		a %= mod;
    		b /= 2;
    	}
    	return res;
    }
	
}