#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int mod = (int)1e9+7; string S; long long f(long long P,long long N,int M) { long long res = 1; P %= M; while(N) { if(N & 1) res = res*P%M; P = P*P%M; N >>= 1; } return res; } void solve() { cin >> S; int l = -1,r = -1; for(int i = 0;i < (int)S.size();i++) if(S[i] == '^') { if(l < 0) l = i; else r = i; } long long A = stoll(S.substr(0,l)),B = stoll(S.substr(l+1,r-l-1)),C = stoll(S.substr(r+1)); cout << f(f(A,B,mod),C,mod) << " " << f(A,f(B,C,mod-1),mod) << endl; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int tt = 1; //cin >> tt; while(tt--) solve(); }