{-# OPTIONS_GHC -O #-}
import Data.List

mp = 1000000007
invmod a p = invmod' a p p 0 1
    where invmod' a p q x y
            | amq==0 = mod (x+p) p
            | otherwise = invmod' q p amq (y-div a q*x) x
            where amq = mod a q
divmod a b p = mod (a * invmod b p) p
cmbmod n k p = foldl' (\a i->divmod (mod (a*(n-i+1)) p) i p) 1 [1..k]

main = do
    (h:w:a:b:_)<-map read.words<$>getLine::IO[Int]
    print $ sol h w a b

sol h w a b = foldl' (\s x-> mod (s+x) mp) (aa*bb) $ unfoldr psi (aa,na,ka, bb,nb,kb)
    where
        na = h-a-1+b
        ka = b
        aa = cmbmod na ka mp
        nb = a-1+w-b-1
        kb = w-b-1
        bb = cmbmod nb kb mp
psi (_,_,_,_,_,0) = Nothing
psi dt@(aa,na,ka,bb,nb,kb) = Just ((aa'*bb')`mod` mp, (aa',na+1,ka+1, bb', nb-1,kb-1))
    where
        aa' = divmod ((aa*(na+1))`mod` mp) (ka+1) mp
        bb' = divmod ((bb*kb)`mod` mp) nb mp