#include <bits/stdc++.h>
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 <atcoder/modint>
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;
}