#include using namespace std; #ifdef LOCAL #include "settings/debug.cpp" #define _GLIBCXX_DEBUG #else #define Debug(...) void(0) #endif #define rep(i, n) for (int i = 0; i < (n); ++i) using ll = long long; using ull = unsigned long long; #include using mint = atcoder::modint1000000007; using mint_pow = atcoder::static_modint<1000000006>; int main() { ll a, b, c, k; cin >> a >> b >> c >> k; mint_pow x = mint_pow(2).pow(k); mint base = mint(a) * b * c; cout << base.pow(x.val()).val() << endl; return 0; }