import Data.Array.IArray
main = do
    [h,w,a,b] <- return . map (read::String->Int) . words =<< getLine
    let memz = 
	  let
	    zenka (1,1)		    = 1
	    zenka (r,c)	| b == c-1 && (h-a+1)<=r = if 1<=r-1 then memz (r-1,c) else 0
			| otherwise = if 1<=r-1 && 1<=c-1 then (memz (r,c-1)) + (memz (r-1,c))
							  else if r==1 then memz (r,c-1) else memz (r-1,c)
	    zarray = amap zenka (listArray ((1,1),(h,w)) [(ro,co) | ro<-[1..h], co<-[1..w]])::Array (Int,Int) Integer
	  in (zarray!)
    print $ memz (h,w) `mod` (10^9 + 7)