import           Control.Monad
import           Control.Monad.ST
import qualified Data.Array                    as A
import qualified Data.Array.Unboxed            as AU
import qualified Data.Array.ST                 as ST
import qualified Data.ByteString.Char8         as BS
import           Data.Char
import           Data.Int
import qualified Data.IntMap                   as IM
import           Data.List
import qualified Data.Map                      as M
import           Data.Maybe
import           Data.Ord
import qualified Data.Set                      as S
import           Data.Time
import qualified Data.Vector                   as V
import qualified Data.Vector.Mutable           as VM
import qualified Data.Vector.Unboxed           as VU
import qualified Data.Vector.Unboxed.Mutable   as VUM

readInt = map (fst . fromJust . BS.readInt) . BS.words <$> BS.getLine
readInts n = replicateM n readInt
readString = map BS.unpack . BS.words <$> BS.getLine
readStrings n = replicateM n $ BS.unpack <$> BS.getLine
toPair [x, y] = (x, y)

main = do
  [n, a, b] <- readInt
  print $ solve n a b

solve n a b =
  mmod $ (pow''' (2, toInteger n)) - 1 - (comb n' a') - (comb n' b')
 where
  n' = toInteger n
  a' = toInteger a
  b' = toInteger b

(^^^) a n = f a n 1
 where
  f a 1 acc = acc
  f a n acc = f a (n - 1) (mmod (acc * a))

comb n a = n' `div` (a' * k')
 where
  n' = fact n
  a' = fact a
  k' = fact (n - a)


fact 1 = 1
fact n = mmod n * fact (n - 1)

mmod n = n `mod` (10 ^ 9 + 7)

pow''' :: (Integer, Integer) -> Integer
pow''' (x, y) = if y == 0 then 1 else if even y then z2 else x * z2
 where
  z1 = pow''' (x, y `div` 2)
  z2 = mmod $ z1 * z1
