using System; using System.Collections.Generic; using static System.Console; using System.Linq; class yuki302 { static long[] NList => ReadLine().Split().Select(long.Parse).ToArray(); static void Main() { var c = NList; var k = long.Parse(ReadLine()); var key = 1000000007; WriteLine(Exp((c[0] * c[1] % key) * c[2] % key, Exp(2, k, key - 1), key)); } static long Exp(long n, long k, int keyNum) { if (k == 0) return 1; if (k == 1) return n % keyNum; var half = Exp(n, k / 2, keyNum); var result = (half * half) % keyNum; return ((k % 2) == 0) ? result : ((result * n) % keyNum); } }