import java.util.Scanner; public class Main{ static long mod=1000000007; static long pow(long a,long x,long m){ if(a==0) return 0; else if(x==0) return 1; else if(x%2==0) return pow((a*a)%m,x/2,m)%m; else return (a*pow((a*a)%m,x/2,m))%m; } public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ String[] str=(sc.next()).split("\\^"); long a=Long.valueOf(str[0])%mod,b=Long.valueOf(str[1]),c=Long.valueOf(str[2]); long ab=pow(a%mod,b,mod); ab=pow(ab%mod,c,mod); long bc=pow(b%(mod-1),c,mod-1); bc=pow(a%mod,bc,mod); System.out.println(ab+" "+bc); } } }