
A, B, K, C, = input().split()
A = int(A)
B = int(B)
K = int(K)
C = int(C)

K_max = K

if K == 0:
    print(0)
elif C != A and C != B:
    print(0)
else:
    """
    # verze pro C++
    M = [512, 256, 128, 64, 32, 16, 8, 4, 2, 1]
    pom = [0,0,0,0,0,0,0,0,0,0]
    novy = []
    hodnoty = [518219190, 792845273, 279632277, 582344008,294967268,65536,256,16,4,2]

    for i in range(10):
        if K >= M[i]:
            K -= M[i];
            pom[i] = 1;

    vysledek = 1

    for i in range(10):
        if pom[i] == 1:
            vysledek *= hodnoty[i]
            vysledek = vysledek % 1000000007

    vysledek = int(vysledek * K_max / 2)

    vysledek = vysledek % 1000000007"""

    vysledek = ((2 ** (K - 1)) * K)
    if A == B:
        vysledek *= 2

    vysledek = vysledek % 1000000007

    print(vysledek)
