#include typedef long long int ln; ln calcPow(ln r,ln n,ln mod){ ln ans=1; ln p=r; while(n>0){ if(n&0x01){ ans=(ans*p)%mod; } p=p*p%mod; n=(n>>1); } return ans; } void run(void){ ln a,b,c; scanf("%lld^%lld^%lld",&a,&b,&c); const ln mod=1000000007; if(a%mod==0){ printf("0 0\n"); return; } printf("%lld ",calcPow(a,(b%(mod-1))*(c%(mod-1))%mod,mod)); printf("%lld\n",calcPow(a,calcPow(b,c,mod-1),mod)); return; } int main(void){ run(); return 0; }