import scala.collection.mutable.ArrayBuffer
import scala.util.control.Breaks
import java.lang.Math
object Main{
  def main(args:Array[String]) = {

    val sc = new java.util.Scanner(System.in)
    val H = sc.nextInt
    val W = sc.nextInt
    val A = sc.nextInt
    val B = sc.nextInt

    var dp = Array.ofDim[Long](W)


    for(i <- 0 until H){
      for(j <- 0 until W){
        if(i<H-A && j>B-1) {
          if(i==0 || j==0){
            dp(j)=1L
          }else{
            dp(j)=(dp(j)+dp(j-1))%1000000007L
          }
        }
      }
    }

    println(dp(W-1)%1000000007L)

  }
}