H, W, A, B = list(map(int, input().split()))

mod = int(1e+9 + 7)

p = mod - 2

X, Y = H-A, W-B

L = []

while p != 0:

  L = [p%2] + L[:]

  p //= 2

S = 0

fL = [1]

invfL = []

for i in range(H+W):

  fL.append(((i+1)*fL[i])%mod)

for i in range(H):

  invi = 1

  for j in range(len(L)):

    if L[j] == 1:

      invi *= fL[i]

      invi %= mod

    if j != len(L)-1:

      invi *= invi

      invi %= mod

  invfL.append(invi)

invB = 1

invW = 1

for i in range(len(L)):

  if L[i] == 1:

    invB *= fL[B-1]

    invB %= mod

    invW *= fL[W-B-1]

    invW %= mod

  if i != len(L)-1:

    invB *= invB

    invB %= mod

    invW *= invW

    invW %= mod

for i in range(X):

  S += (fL[i+B-1]*fL[H+Y-i-2]*invfL[i]*invfL[H-i-1])%mod

  S %= mod

print(((S*invB*invW)%mod))
H, W, A, B = list(map(int, input().split()))

mod = int(1e9) + 7

def inved(a):

  x, y, u, v, k, l = 1, 0, 0, 1, a, mod

  while l != 0:

    x, y, u, v = u, v, x - u * (k // l), y - v * (k // l)

    k, l = l, k % l

  return x % mod

fact = [1 for _ in range(H+W+A+B+1)]

invf = [1 for _ in range(H+W+A+B+1)]

for i in range(H+W+A+B):

  fact[i+1] = (fact[i] * (i + 1)) % mod

invf[-1] = inved(fact[-1])

for i in range(H+W+A+B, 0, -1):

  invf[i-1] = (invf[i] * i) % mod

S = 0

for i in range(H-A):

  S += (fact[i+B-1] * invf[i] * fact[H-i+W-B-2] * invf[H-1-i]) % mod

  S %= mod

S *= (invf[B-1] * invf[W-B-1]) % mod

S %= mod



print(S)
H, W, A, B = list(map(int, input().split()))
mod = int(1e9 + 7)
p = mod - 2
X, Y = H - A, W - B
L = []
while p != 0:
    L = [p % 2] + L[:]
    p //= 2
S = 0
fL = [1]
invfL = []
for i in range(H + W):
    fL.append(((i + 1) * fL[i]) % mod)
for i in range(H):
    invi = 1
    for j in range(len(L)):
        if L[j] == 1:
            invi *= fL[i]
            invi %= mod
        if j != len(L) - 1:
            invi *= invi
            invi %= mod
    invfL.append(invi)
invB = 1
invW = 1
for i in range(len(L)):
    if L[i] == 1:
        invB *= fL[B - 1]
        invB %= mod
        invW *= fL[W - B - 1]
        invW %= mod
    if i != len(L) - 1:
        invB *= invB
        invB %= mod
        invW *= invW
        invW %= mod
for i in range(X):
    S += (fL[i + B - 1] * fL[H + Y - i - 2] * invfL[i] * invfL[H - i - 1]) % mod
    S %= mod
print(((S * invB * invW) % mod))

H, W, A, B = list(map(int, input().split()))
mod = int(1e9) + 7


def inved(a):
    x, y, u, v, k, l = 1, 0, 0, 1, a, mod
    while l != 0:
        x, y, u, v = u, v, x - u * (k // l), y - v * (k // l)
        k, l = l, k % l
    return x % mod


fact = [1 for _ in range(H + W + A + B + 1)]
invf = [1 for _ in range(H + W + A + B + 1)]
for i in range(H + W + A + B):
    fact[i + 1] = (fact[i] * (i + 1)) % mod
invf[-1] = inved(fact[-1])
for i in range(H + W + A + B, 0, -1):
    invf[i - 1] = (invf[i] * i) % mod
S = 0
for i in range(H - A):
    S += (fact[i + B - 1] * invf[i] * fact[H - i + W - B - 2] * invf[H - 1 - i]) % mod
    S %= mod
S *= (invf[B - 1] * invf[W - B - 1]) % mod
S %= mod
print(S)

-mod = int(1e9 + 7) -p = mod - 2 -X, Y = H - A, W - B -L = [] -while p != 0: -    L = [p % 2] + L[:] -    p //= 2 +mod = int(1e9) + 7 + + +def inved(a): +    x, y, u, v, k, l = 1, 0, 0, 1, a, mod +    while l != 0: +        x, y, u, v = u, v, x - u * (k // l), y - v * (k // l) +        k, l = l, k % l +    return x % mod + + +fact = [1 for _ in range(H + W + A + B + 1)] +invf = [1 for _ in range(H + W + A + B + 1)] +for i in range(H + W + A + B): +    fact[i + 1] = (fact[i] * (i + 1)) % mod +invf[-1] = inved(fact[-1]) +for i in range(H + W + A + B, 0, -1): +    invf[i - 1] = (invf[i] * i) % mod -fL = [1] -invfL = [] -for i in range(H + W): -    fL.append(((i + 1) * fL[i]) % mod) -for i in range(H): -    invi = 1 -    for j in range(len(L)): -        if L[j] == 1: -            invi *= fL[i] -            invi %= mod -        if j != len(L) - 1: -            invi *= invi -            invi %= mod -    invfL.append(invi) -invB = 1 -invW = 1 -for i in range(len(L)): -    if L[i] == 1: -        invB *= fL[B - 1] -        invB %= mod -        invW *= fL[W - B - 1] -        invW %= mod -    if i != len(L) - 1: -        invB *= invB -        invB %= mod -        invW *= invW -        invW %= mod -for i in range(X): -    S += (fL[i + B - 1] * fL[H + Y - i - 2] * invfL[i] * invfL[H - i - 1]) % mod +for i in range(H - A): +    S += (fact[i + B - 1] * invf[i] * fact[H - i + W - B - 2] * invf[H - 1 - i]) % mod -print(((S * invB * invW) % mod)) +S *= (invf[B - 1] * invf[W - B - 1]) % mod +S %= mod +print(S)