n, a, b = map(int, input().split())

mod = 10 ** 9 + 7
N = min(n, 2 * 10**5)
fac = [1, 1]
finv = [1, 1]
inv = [0, 1]

def comb(n, r):
  return fac[n] * ( finv[r] * finv[n-r] % mod ) % mod
 
for i in range(2, N + 1):
  fac.append( ( fac[-1] * i ) % mod )
  inv.append( mod - ( inv[mod % i] * (mod // i) % mod ) )
  finv.append( finv[-1] * inv[-1]  % mod )

def frac_rev(n, r):
  x = 1
  for i in range(n, n-r, -1):
    x = x * i % mod
  return x

if n <= 2 * 10**5:
  print(( pow(2, n, mod) - 1 - comb(n, a) -comb(n, b) ) % mod)
else:
  print(( pow(2, n, mod) - 1 - frac_rev(n, a) * finv[a] % mod - frac_rev(n, b) * finv[b] % mod) % mod) n, a, b = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split a b mod = 10 ** 9 + 7 mod 10 ** 9 + 7 10 ** 9 10 9 7 N = min(n, 2 * 10**5) N min(n, 2 * 10**5) min n 2 * 10**5 2 10**5 10 5 fac = [1, 1] fac [1, 1] 1 1 finv = [1, 1] finv [1, 1] 1 1 inv = [0, 1] inv [0, 1] 0 1 def comb(n, r):
  return fac[n] * ( finv[r] * finv[n-r] % mod ) % mod
  comb return fac[n] * ( finv[r] * finv[n-r] % mod ) % mod fac[n] * ( finv[r] * finv[n-r] % mod ) % mod fac[n] * ( finv[r] * finv[n-r] % mod ) fac[n] fac n finv[r] * finv[n-r] % mod finv[r] * finv[n-r] finv[r] finv r finv[n-r] finv n-r n r mod mod n n r r for i in range(2, N + 1):
  fac.append( ( fac[-1] * i ) % mod )
  inv.append( mod - ( inv[mod % i] * (mod // i) % mod ) )
  finv.append( finv[-1] * inv[-1]  % mod ) i range(2, N + 1) range 2 N + 1 N 1 fac.append( ( fac[-1] * i ) % mod ) fac.append fac append ( fac[-1] * i ) % mod fac[-1] * i fac[-1] fac -1 i mod inv.append( mod - ( inv[mod % i] * (mod // i) % mod ) ) inv.append inv append mod - ( inv[mod % i] * (mod // i) % mod ) mod inv[mod % i] * (mod // i) % mod inv[mod % i] * (mod // i) inv[mod % i] inv mod % i mod i mod // i mod i mod finv.append( finv[-1] * inv[-1]  % mod ) finv.append finv append finv[-1] * inv[-1]  % mod finv[-1] * inv[-1] finv[-1] finv -1 inv[-1] inv -1 mod def frac_rev(n, r):
  x = 1
  for i in range(n, n-r, -1):
    x = x * i % mod
  return x frac_rev x = 1 x 1 for i in range(n, n-r, -1):
    x = x * i % mod
   i range(n, n-r, -1) range n n-r n r -1 x = x * i % mod x x * i % mod x * i x i mod return x x n n r r if n <= 2 * 10**5:
  print(( pow(2, n, mod) - 1 - comb(n, a) -comb(n, b) ) % mod)
else:
  print(( pow(2, n, mod) - 1 - frac_rev(n, a) * finv[a] % mod - frac_rev(n, b) * finv[b] % mod) % mod) n <= 2 * 10**5 n 2 * 10**5 2 10**5 10 5 print(( pow(2, n, mod) - 1 - comb(n, a) -comb(n, b) ) % mod) print ( pow(2, n, mod) - 1 - comb(n, a) -comb(n, b) ) % mod pow(2, n, mod) - 1 - comb(n, a) -comb(n, b) pow(2, n, mod) - 1 - comb(n, a) pow(2, n, mod) - 1 pow(2, n, mod) pow 2 n mod 1 comb(n, a) comb n a comb(n, b) comb n b mod print(( pow(2, n, mod) - 1 - frac_rev(n, a) * finv[a] % mod - frac_rev(n, b) * finv[b] % mod) % mod) print ( pow(2, n, mod) - 1 - frac_rev(n, a) * finv[a] % mod - frac_rev(n, b) * finv[b] % mod) % mod pow(2, n, mod) - 1 - frac_rev(n, a) * finv[a] % mod - frac_rev(n, b) * finv[b] % mod pow(2, n, mod) - 1 - frac_rev(n, a) * finv[a] % mod pow(2, n, mod) - 1 pow(2, n, mod) pow 2 n mod 1 frac_rev(n, a) * finv[a] % mod frac_rev(n, a) * finv[a] frac_rev(n, a) frac_rev n a finv[a] finv a mod frac_rev(n, b) * finv[b] % mod frac_rev(n, b) * finv[b] frac_rev(n, b) frac_rev n b finv[b] finv b mod mod N = min(n, 2 * 10**5) min(n, 2 * 10**5) N finv = [1, 1] [1, 1] finv def comb(n, r):
  return fac[n] * ( finv[r] * finv[n-r] % mod ) % mod
  def comb(n, r):
  return fac[n] * ( finv[r] * finv[n-r] % mod ) % mod
  comb def frac_rev(n, r):
  x = 1
  for i in range(n, n-r, -1):
    x = x * i % mod
  return x def frac_rev(n, r):
  x = 1
  for i in range(n, n-r, -1):
    x = x * i % mod
  return x frac_rev a, b = map(int, input().split()) map(int, input().split()) a b = map(int, input().split()) map(int, input().split()) b mod = 10 ** 9 + 7 10 ** 9 + 7 mod n, a, b = map(int, input().split()) map(int, input().split()) n fac = [1, 1] [1, 1] fac inv = [0, 1] [0, 1] inv
n, a, b = map(int, input().split())

mod = 10 ** 9 + 7
N = min(n, 2 * 10**5)
fac = [1, 1]
finv = [1, 1]
inv = [0, 1]

def comb(n, r):
  return fac[n] * ( finv[r] * finv[n-r] % mod ) % mod
 
for i in range(2, N + 1):
  fac.append( ( fac[-1] * i ) % mod )
  inv.append( mod - ( inv[mod % i] * (mod // i) % mod ) )
  finv.append( finv[-1] * inv[-1]  % mod )

def frac_rev(n, r):
  x = 1
  for i in range(n, n-r, -1):
    x = x * i % mod
  return x

if n <= 2 * 10**5:
  print(( pow(2, n, mod) - 1 - comb(n, a) -comb(n, b) ) % mod)
else:
  print(( pow(2, n, mod) - 1 - frac_rev(n, a) * finv[a] % mod - frac_rev(n, b) * finv[b] % mod) % mod)