import Data.List
import qualified Data.Array.IArray as A

main = do
  [h,w,a,b] <- map read . words <$> getLine
  print (iroha h w a b)

iroha h w a b = foldr1 (+%) (zipWith (*%) r1 r2)
  where
    t = factTable $ fromIntegral (h + w - 2)
    r1 = map (\y -> combMod t (y + (h-a-1)) y) [b .. w-1]
    r2 = map (\y -> combMod t (y + (a-1)) y) (reverse [0 .. (w-1)-b])


type FactTable = A.Array Int (Integer, Integer)

modulus :: Integer
modulus = 1000000007

(+%) :: Integer -> Integer -> Integer
(+%) x y = mod (x + y) modulus

(*%) :: Integer -> Integer -> Integer
(*%) x y = mod (x * y) modulus

powMod :: Integer -> Integer -> Integer
powMod x n
  | n == 0 = 1
  | odd n = x *% powMod x (n-1)
  | otherwise = let y = powMod x (div n 2) in y *% y

combMod :: FactTable -> Integer -> Integer -> Integer
combMod t n r
  | n < r = 0
  | otherwise = fst (t ! n) *% snd (t ! r) *% snd (t ! (n - r))

factTable :: Int -> FactTable
factTable n = A.listArray (0, n) (zip facts factInvs)
  where
    facts = scanl (*%) 1 [1 .. fromIntegral n]
    factInvs = map (\x -> mod (powMod x (modulus - 2)) modulus) facts

(!) :: FactTable -> Integer -> (Integer, Integer)
(!) t i = t A.! fromIntegral i
