#include #include uint64_t power(uint64_t a, uint64_t b) { uint64_t res = 1; while (b) { res %= 1000000007; res *= a; --b; } return res; } uint64_t fact(uint64_t f) { //if (f <= 1) return 1; //return f * fact(f - 1); uint64_t res = 1; while (f > 1) { res *= f; --f; } return res; } uint64_t permutations(uint64_t a, uint64_t b) { uint64_t x = (fact(a) + fact(b)); uint64_t y = fact(a * b); return x/y; } int main(int argc, const char * argv[]) { //std::cout << fact(1000) << std::endl; uint64_t a, b, k, c; std::cin >> a >> b >> k >> c; uint64_t variations = power(2, k); uint64_t res = variations * k; if (a != b) { res /= 2; } res %= 1000000007l; std::cout << res << std::endl; return 0; }