package main import ( "fmt" ) func main() { var A, B, C int fmt.Scanf("%d^%d^%d", &A, &B, &C) mod := 1000000007 x := pow(pow(A, B, mod), C, mod) y := pow(A, pow(B, C, mod-1)+mod-1, mod) fmt.Println(x, y) } //func pow(x, n, mod int) int { // if n == 0 { // return 1 // } else if x == 0 { // return 0 // } else if n%2 == 0 { // return pow(x*x%mod, n/2, mod) // } else { // return pow(x*x%mod, n/2, mod) * x % mod // } //} func pow(a, b, mod int) int { a %= mod if a == 0 { return 0 } res := 1 for b != 0 { if b&1 == 1 { res = res * a % mod } a = a * a % mod b >>= 1 } return res }