import qualified Data.Vector as V
main = mapM_ (print . solve . map read . words) . lines =<< getContents
m=1000000007
solve [h,w,a,b] = foldr (\a b->(a+b)`mod`m) 0 $ map f [1..h-a] where
  fact = V.generate (h+w+1) $ \i->if i<2 then 1 else fact V.! (i-1)*i`mod`m
  d1=inv $ fact V.! (b-1)
  d2=inv $ fact V.! (w-b-1)
  f i = v1*v2`mod`m where
    v1 = fact V.! (b+i-2) * inv (fact V.! (i-1)) `mod` m * d1 `mod` m
    v2 = fact V.! (h-i+w-b-1) * inv (fact V.! (h-i)) `mod` m * d2 `mod` m
inv a =  inv' a m 0 1
inv' a b u v 
  |a==0 = (u+m)`mod`m
  |otherwise = let t=b`div`a in inv' (b-t*a) a v (u-t*v)