import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;

public class Barrels {
    private static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

    public static BigInteger pow (int i) {
        return BigInteger.valueOf(1<<i);
    }

    public static void main(String[] args) throws IOException {
        String[] input = reader.readLine().split(" ");
        int a = Integer.parseInt(input[0]);
        int b = Integer.parseInt(input[1]);
        int k = Integer.parseInt(input[2]);
        int c = Integer.parseInt(input[3]);

        if((a != c && b != c) || k == 0) {
            System.out.println(0);
            return;
        }

        if( a == b) {
            System.out.println(k);
            return;
        }

        System.out.println(pow(k-1).multiply(BigInteger.valueOf(k)).mod(BigInteger.valueOf(1000000007)));
    }
}

