val max = 200000

val factorial = LongArray(max + 1)
val inverse = LongArray(max + 1)
val factorialInverse = LongArray(max + 1)

fun main(args: Array<String>) {
    val mod = 1000000007
    val (H, W, A, B) = readInputLine().split(" ").map { it.toInt() }
    
    factorial[0] = 1L
    factorial[1] = 1L
    inverse[0] = 1L
    inverse[1] = 1L
    factorialInverse[0] = 1L
    factorialInverse[1] = 1L
    for (i in 2..max) {
        factorial[i] = (factorial[i - 1] * i.toLong() % mod)
        inverse[i] = (mod - inverse[mod.toInt() % i] * (mod / i.toLong()) % mod)
        factorialInverse[i] = (factorialInverse[i - 1] * inverse[i] % mod)
    }

    var ans = factorial[H + W - 2] * (factorialInverse[H - 1] * factorialInverse[W - 1] % mod) % mod
    
    for (i in 0 until B) {
        ans -= factorial[H - A - 1 + i] * (factorialInverse[H - A - 1] * factorialInverse[i] % mod) % mod * factorial[A + W - i - 2] % mod * (factorialInverse[A - 1] * factorialInverse[W - i - 1] % mod) % mod
        if (ans < 0) {
            ans += mod
        }
    }
    
    println(ans)
}

fun readInputLine(): String {
    return readLine()!!
}
