#include using namespace std; int p = 1000000007; long long pow_re(long long a, long long n) { long long ans = 1; bitset<8> b(n); while (!b.none()) { if (b.test(0)) ans = ans * a % p; a = a * a % p; b = (b >> 1); } return ans; } int main() { long long a, b, c; string s; stringstream ss; cin >> s; for(int i = 0; i < s.length(); i++){ if(s.at(i) == '^') s.at(i) = ' '; } ss << s; ss >> a >> b >> c; cout << pow_re(pow_re(a, b), c) << " " << pow_re(a, pow_re(b, c)) << endl; }