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

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
    let al = powMod 2 n - 1
    let na = chooseOpt n a
    let nb = chooseOpt n b
    print $ positivize $ (al - na - nb) `mod` mdl

powMod = powModAux 1
powModAux :: Int -> Int -> Int -> Int
powModAux ac cur 0 = ac
powModAux ac cur n
    | even n = powModAux ac            (t cur cur) (div n 2)
    | odd n  = powModAux (t cur ac)    (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] ) $ modInv $ (prod' [1..i])
    prod' = foldr t 1

modInv = (`powMod` (mdl-2))
