#include using namespace std; using ll = long long int; using ld = long double; #define pow(n,m) powl(n,m) #define sqrt(n) sqrtl(n) const ll MAX = 5000000000000000000; const ld PI = 3.14159265358979; const ll MOD = 1000000007; random_device rd; mt19937 mt(rd()); ld dotorad(ld K){return PI * K / 180.0;} ld radtodo(ld K){return K * 180.0 / PI;} ll modpow(ll A,ll B,ll M){ ll r = 1,p = A; while(B > 0){ if(B % 2 == 1) r = (r * p) % M; p = (p * p) % M; B /= 2; } return r; } int main(){ ll A,B,C,K; cin >> A >> B >> C >> K; ll p = modpow(2,K,MOD - 1); ll ans = modpow(A,p,MOD); ans *= modpow(B,p,MOD); ans %= MOD; ans *= modpow(C,p,MOD); ans %= MOD; cout << ans << endl; }