import qualified Data.ByteString.Char8 as C
import Data.List

mdl :: Num a => a
mdl = 10^9 + 7

t a b = a * b `mod` mdl

positivize x = if x < 0 then x + mdl else x

main :: IO ()
main = do
    [n,a,b] <- unfoldr (C.readInt . C.dropWhile (==' ')) <$> C.getLine
    print $ positivize $ (powMod 2 n - 1 - chooseOpt n a - chooseOpt n b) `mod` mdl

powMod :: Int -> Int -> Int
powMod cur 0 = 1
powMod cur n
    | even n = powMod (t cur cur) (div n 2)
    | odd n  = (t cur) $! powMod (t cur cur) (div n 2)

chooseOpt n i = choose n (min (n-i) i)
    where
    choose n i = t (prod' [n-i+1..n] ) $ (prod' [1..i]) `powMod` (mdl-2)
    prod' = foldr t 1
