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 long pow (long i) {
        return 1l<<i;
    }

    public static void main(String[] args) throws IOException {
        String[] input = reader.readLine().split(" ");
        long a = Long.parseLong(input[0]);
        long b = Long.parseLong(input[1]);
        long k = Long.parseLong(input[2]);
        long c = Long.parseLong(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) * k) % 1000000007);
    }
}

