import java.io.*; import java.util.*; import java.math.BigInteger; public class Solution { /** * @param args */ static BigInteger two = new BigInteger("2"); static BigInteger mod = new BigInteger("1000000007"); public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b= sc.nextInt(); BigInteger pow =new BigInteger(sc.next()); sc.close(); System.out.println(calculateHigher((a+b)/2, pow).toString()); } private static BigInteger calculateHigher(int i, BigInteger pow) { if(pow.equals(BigInteger.ONE)) return new BigInteger(String.valueOf(i)); if(pow.equals(BigInteger.ZERO)) return BigInteger.ONE; BigInteger left =new BigInteger(String.valueOf(calculateHigher(i, pow.divide(two)))); left=left.mod(mod); left=left.pow(2); if(pow.mod(two).intValue()==0) { return left.mod(mod); } else{ return (left.multiply(new BigInteger(String.valueOf(i)))).mod(mod); } } }