from sys import stdin, stdout, stderr, setrecursionlimit

from functools import lru_cache



setrecursionlimit(10**7)



mod = 10**9 + 7



def solve():

    def binom(n, k):

        res = (modfact[n] * factinv[k]) % mod

        res = (res * factinv[n - k]) % mod

        return res



    h, w, a, b = list(map(int, input().split()))

    ans = 0

    modfact = [1] * (h + w)

    factinv = [1] * (h + w)



    for i in range(1, h + w):

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

        factinv[i] = (pow(i, mod - 2, mod) * factinv[i - 1]) % mod



    for i in range(h - a):

        ans += (binom(b + i - 1, i) * binom(w + h - b - i - 2, h - i - 1)) % mod

        ans %= mod



    print(ans)



'''

@lru_cache(maxsize=None)

def binom(n, k):

    res = (modfact(n) * factinv(k)) % mod

    res = (res * factinv(n - k)) % mod

    return res



@lru_cache(maxsize=None)

def modfact(n):

    if n == 0:

        return 1



    return (n * modfact(n - 1)) % mod



@lru_cache(maxsize=None)

def factinv(n):

    if n == 0:

        return 1



    return (pow(n, mod - 2, mod) * factinv(n - 1)) % mod

'''



if __name__ == '__main__':

    solve()
from sys import stdin, stdout, stderr



mod = 10**9 + 7



def solve():

    def binom(n, k):

        res = (modfact[n] * factinv[k]) % mod

        res = (res * factinv[n - k]) % mod

        return res



    h, w, a, b = list(map(int, input().split()))

    ans = 0

    modfact = [1] * (h + w)

    factinv = [1] * (h + w)

    inv = [1] * (h + w)



    for i in range(2, h + w):

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

        inv[i] = (-(mod // i) * inv[mod % i]) % mod

        factinv[i] = (inv[i] * factinv[i - 1]) % mod



    for i in range(h - a):

        ans += (binom(b + i - 1, i) * binom(w + h - b - i - 2, h - i - 1)) % mod

        ans %= mod



    print(ans)



if __name__ == '__main__':

    solve()
from sys import stdin, stdout, stderr, setrecursionlimit
from functools import lru_cache

setrecursionlimit(10**7)
mod = 10**9 + 7


def solve():
    def binom(n, k):
        res = (modfact[n] * factinv[k]) % mod
        res = (res * factinv[n - k]) % mod
        return res

    h, w, a, b = list(map(int, input().split()))
    ans = 0
    modfact = [1] * (h + w)
    factinv = [1] * (h + w)
    for i in range(1, h + w):
        modfact[i] = (i * modfact[i - 1]) % mod
        factinv[i] = (pow(i, mod - 2, mod) * factinv[i - 1]) % mod
    for i in range(h - a):
        ans += (binom(b + i - 1, i) * binom(w + h - b - i - 2, h - i - 1)) % mod
        ans %= mod
    print(ans)


"""
@lru_cache(maxsize=None)
def binom(n, k):
    res = (modfact(n) * factinv(k)) % mod
    res = (res * factinv(n - k)) % mod
    return res
@lru_cache(maxsize=None)
def modfact(n):
    if n == 0:
        return 1
    return (n * modfact(n - 1)) % mod
@lru_cache(maxsize=None)
def factinv(n):
    if n == 0:
        return 1
    return (pow(n, mod - 2, mod) * factinv(n - 1)) % mod
"""
if __name__ == "__main__":
    solve()

from sys import stdin, stdout, stderr

mod = 10**9 + 7


def solve():
    def binom(n, k):
        res = (modfact[n] * factinv[k]) % mod
        res = (res * factinv[n - k]) % mod
        return res

    h, w, a, b = list(map(int, input().split()))
    ans = 0
    modfact = [1] * (h + w)
    factinv = [1] * (h + w)
    inv = [1] * (h + w)
    for i in range(2, h + w):
        modfact[i] = (i * modfact[i - 1]) % mod
        inv[i] = (-(mod // i) * inv[mod % i]) % mod
        factinv[i] = (inv[i] * factinv[i - 1]) % mod
    for i in range(h - a):
        ans += (binom(b + i - 1, i) * binom(w + h - b - i - 2, h - i - 1)) % mod
        ans %= mod
    print(ans)


if __name__ == "__main__":
    solve()

-from sys import stdin, stdout, stderr, setrecursionlimit -from functools import lru_cache +from sys import stdin, stdout, stderr -setrecursionlimit(10**7) -    for i in range(1, h + w): +    inv = [1] * (h + w) +    for i in range(2, h + w): -        factinv[i] = (pow(i, mod - 2, mod) * factinv[i - 1]) % mod +        inv[i] = (-(mod // i) * inv[mod % i]) % mod +        factinv[i] = (inv[i] * factinv[i - 1]) % mod -""" -@lru_cache(maxsize=None) -def binom(n, k): -    res = (modfact(n) * factinv(k)) % mod -    res = (res * factinv(n - k)) % mod -    return res -@lru_cache(maxsize=None) -def modfact(n): -    if n == 0: -        return 1 -    return (n * modfact(n - 1)) % mod -@lru_cache(maxsize=None) -def factinv(n): -    if n == 0: -        return 1 -    return (pow(n, mod - 2, mod) * factinv(n - 1)) % mod -"""