package barrels;

import java.math.BigInteger;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


public class Barrels {

    private static final int barrelsCount = 5;
    private static final int moduloNumber = 1_000_000_007;
    //StringTokenizer st = new StringTokenizer("");
    //BufferedReader br = new BufferedReader(new InputStreamReader(System.in));


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String numbersLine = sc.nextLine(); // input string
        //String numbersLine = br.readLine();
        //if(line == null) break;


        int[] barrelsNumbers = getNumbersFromLine(barrelsCount - 1, numbersLine); // numbers on barrels

        int digitA = barrelsNumbers[0];
        int digitB = barrelsNumbers[1];
//        int digitCount = barrelsNumbers[2];
//        List<Long> numbersFromDigits = new ArrayList<>();
//        long startNum = Long.parseLong(digitNTimes(digitA, digitCount));
        int digitK = barrelsNumbers[2];
        int digitC = barrelsNumbers[3];

        if (digitC != digitA && digitC != digitB) {
            System.out.println(0);
        } else {
            BigInteger numberOfLines = new BigInteger("1");
            for (int i = 0; i < digitK; i++) {
                numberOfLines = numberOfLines.multiply(new BigInteger("2"));
            }

            BigInteger solution;
            solution = numberOfLines.multiply(new BigInteger(String.valueOf(digitK)));
            if (digitA != digitB) {
                solution = solution.divide(new BigInteger("2"));
            }
            solution = solution.mod(new BigInteger(String.valueOf(moduloNumber)));
            System.out.println(solution);
        }
    }

    private static int[] getNumbersFromLine(int numbersCount, String line) {
        int[] numbers = new int[numbersCount];
        int index = 0;
        for (String numberStr : line.split(" ")) {
            numbers[index++] = Integer.parseInt(numberStr);
        }
        return numbers;
    }

//    private static String digitNTimes(int digit, int times) {
//        StringBuilder number = new StringBuilder();
//        for (int i = 0; i < times; i++) {
//            number.append(digit);
//        }
//        return number.toString();
//    }

}

