import Control.Monad

main = sol <$> get >>= print

get = fmap read . words <$> getLine

--sol [h,w,a,b] = sum [sq x b*sq (h-x+1) (w-b) | x <- [1..h-a]]
sol [h,w,a,b] = sq h w - sum [sq (h-a+1) y | y <- [1..b]]

sq x y = choose (x+y-2) (x-1)

p = 10^9+7 :: Int

-- | Modulo of Int
newtype Modulo = Modulo { getInt :: Int } deriving (Eq, Ord)

instance Num Modulo where
  Modulo a + Modulo b = Modulo ((a + b) `mod` p)
  Modulo a - Modulo b = Modulo ((a - b) `mod` p)
  Modulo a * Modulo b = Modulo ((a * b) `mod` p)
  abs = undefined
  negate = undefined
  signum = undefined
  fromInteger i = Modulo (fromIntegral i `mod` p)

instance Show Modulo where
  show (Modulo i) = show i

-- Modular inverse as needed
instance Fractional Modulo where
  recip = inv
  fromRational = undefined

-- Modular multiplicative inverse
inv :: Modulo -> Modulo
inv 1 = 1
inv a = pwr a (p-2)

-- Modular power Int
pwr :: Modulo -> Int -> Modulo
pwr a n
  | n == 0    = 1
  | odd n     = a*r
  | otherwise = r
  where
  q = pwr a (n `div` 2)
  r = q*q

-- Modular factorial Int
fac :: Int -> Modulo
fac 0 = 1
fac n = Modulo n*fac (n-1)

-- Modular choose
choose :: Int -> Int -> Modulo
choose n m = fac' n m' * inv (fac m')
  where 
  m' = min m (n-m)

fac' :: Int -> Int -> Modulo
fac' _ 0 = 1
fac' n m = Modulo n*fac' (n-1) (m-1)