import qualified Data.Vector.Unboxed.Mutable as VUM
import qualified Data.Vector.Unboxed as VU
import Control.Monad

powMod :: Int -> Int -> Int -> Int
powMod n k m
    | k == 0 = 1
    | odd k = (powMod n (k-1) m) * n `mod` m
    | otherwise = t * t `mod` m
        where
            t = powMod n (k `quot` 2) m

invModWithFermat :: Int -> Int -> Int
invModWithFermat a m = powMod a (m - 2) m

solve :: Int -> Int -> Int -> Int
solve n a b = (n' - (na * a' `mod` m) - (nb * b' `mod` m) - 1) `mod` m
    where
        m = 10 ^ 9 + 7
        n' = ((powMod 2 n m) + m) `mod` m
        a' = invModWithFermat (VU.foldl' (\acc x -> x * acc `mod` m) 1 $ VU.fromList [1..a]) m
        b' = invModWithFermat (VU.foldl' (\acc x -> x * acc `mod` m) 1 $ VU.fromList [1..b]) m
        na = VU.foldl' (\acc x -> x * acc `mod` m) 1 $ VU.fromList [n, n-1..n-a+1]
        nb = VU.foldl' (\acc x -> x * acc `mod` m) 1 $ VU.fromList [n, n-1..n-b+1]

main = do
    [n,a,b] <- map read . words <$> getLine :: IO [Int]
    print $ max 0 (solve n a b)
