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

lm = min(n, 2*10**5)

# ①nCrの各項のmod(10^9+7)を事前計算
p = 10 ** 9 + 7
fact = [1, 1]  # fact[n] = (n! mod p)
factinv = [1, 1]  # factinv[n] = ((n!)^(-1) mod p)
inv = [0, 1]  # factinv 計算用

for i in range(2, lm + 1):
  fact.append((fact[-1] * i) % p)
  inv.append((-inv[p % i] * (p // i)) % p)
  factinv.append((factinv[-1] * inv[-1]) % p)

# ②事前計算した項を掛け合わせ
def cmb(n, r, p):
  if (r < 0) or (n < r):
    return 0
  r = min(r, n - r)
  rt = 1
  for i in range(r):
    rt = (rt * (n-i)) % p
  rt = rt*factinv[r] % p
  return rt

def pow_r(x, n, p):
  """
  O(log n)
  """
  if n == 0:  # exit case
    return 1
  if n % 2 == 0:  # standard case ① n is even
    return pow_r(x ** 2 % p, n // 2, p)
  else:  # standard case ② n is odd
    return x * pow_r(x ** 2 % p, (n - 1) // 2, p) % p

rlt = pow_r(2,n,p)
  
rlt -= 1


rlt -= cmb(n,a,p) % p
rlt -= cmb(n,b,p) % p

while rlt < 0:
  rlt += p

print(rlt) n, a, b = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split a b lm = min(n, 2*10**5) lm min(n, 2*10**5) min n 2*10**5 2 10**5 10 5 p = 10 ** 9 + 7 p 10 ** 9 + 7 10 ** 9 10 9 7 fact = [1, 1] fact [1, 1] 1 1 factinv = [1, 1] factinv [1, 1] 1 1 inv = [0, 1] inv [0, 1] 0 1 for i in range(2, lm + 1):
  fact.append((fact[-1] * i) % p)
  inv.append((-inv[p % i] * (p // i)) % p)
  factinv.append((factinv[-1] * inv[-1]) % p)

# ②事前計算した項を掛け合わせ i range(2, lm + 1) range 2 lm + 1 lm 1 fact.append((fact[-1] * i) % p) fact.append fact append (fact[-1] * i) % p fact[-1] * i fact[-1] fact -1 i p inv.append((-inv[p % i] * (p // i)) % p) inv.append inv append (-inv[p % i] * (p // i)) % p -inv[p % i] * (p // i) -inv[p % i] inv[p % i] inv p % i p i p // i p i p factinv.append((factinv[-1] * inv[-1]) % p) factinv.append factinv append (factinv[-1] * inv[-1]) % p factinv[-1] * inv[-1] factinv[-1] factinv -1 inv[-1] inv -1 p def cmb(n, r, p):
  if (r < 0) or (n < r):
    return 0
  r = min(r, n - r)
  rt = 1
  for i in range(r):
    rt = (rt * (n-i)) % p
  rt = rt*factinv[r] % p
  return rt cmb if (r < 0) or (n < r):
    return 0
   (r < 0) or (n < r) r < 0 r 0 n < r n r return 0 0 r = min(r, n - r) r min(r, n - r) min r n - r n r rt = 1 rt 1 for i in range(r):
    rt = (rt * (n-i)) % p
   i range(r) range r rt = (rt * (n-i)) % p rt (rt * (n-i)) % p rt * (n-i) rt n-i n i p rt = rt*factinv[r] % p rt rt*factinv[r] % p rt*factinv[r] rt factinv[r] factinv r p return rt rt n n r r p p def pow_r(x, n, p):
  """
  O(log n)
  """
  if n == 0:  # exit case
    return 1
  if n % 2 == 0:  # standard case ① n is even
    return pow_r(x ** 2 % p, n // 2, p)
  else:  # standard case ② n is odd
    return x * pow_r(x ** 2 % p, (n - 1) // 2, p) % p pow_r """
  O(log n)
  """ if n == 0:  # exit case
    return 1
   n == 0 n 0 return 1 1 if n % 2 == 0:  # standard case ① n is even
    return pow_r(x ** 2 % p, n // 2, p)
  else:  # standard case ② n is odd
    return x * pow_r(x ** 2 % p, (n - 1) // 2, p) % p n % 2 == 0 n % 2 n 2 0 return pow_r(x ** 2 % p, n // 2, p) pow_r(x ** 2 % p, n // 2, p) pow_r x ** 2 % p x ** 2 x 2 p n // 2 n 2 p return x * pow_r(x ** 2 % p, (n - 1) // 2, p) % p x * pow_r(x ** 2 % p, (n - 1) // 2, p) % p x * pow_r(x ** 2 % p, (n - 1) // 2, p) x pow_r(x ** 2 % p, (n - 1) // 2, p) pow_r x ** 2 % p x ** 2 x 2 p (n - 1) // 2 n - 1 n 1 2 p p x x n n p p rlt = pow_r(2,n,p) rlt pow_r(2,n,p) pow_r 2 n p rlt -= 1 rlt 1 rlt -= cmb(n,a,p) % p rlt cmb(n,a,p) % p cmb(n,a,p) cmb n a p p rlt -= cmb(n,b,p) % p rlt cmb(n,b,p) % p cmb(n,b,p) cmb n b p p while rlt < 0:
  rlt += p rlt < 0 rlt 0 rlt += p rlt p print(rlt) print rlt b = map(int, input().split()) map(int, input().split()) b n, a, b = map(int, input().split()) map(int, input().split()) n a, b = map(int, input().split()) map(int, input().split()) a rlt -= cmb(n,b,p) % p cmb(n,b,p) % p rlt fact = [1, 1] [1, 1] fact def cmb(n, r, p):
  if (r < 0) or (n < r):
    return 0
  r = min(r, n - r)
  rt = 1
  for i in range(r):
    rt = (rt * (n-i)) % p
  rt = rt*factinv[r] % p
  return rt def cmb(n, r, p):
  if (r < 0) or (n < r):
    return 0
  r = min(r, n - r)
  rt = 1
  for i in range(r):
    rt = (rt * (n-i)) % p
  rt = rt*factinv[r] % p
  return rt cmb rlt -= 1 1 rlt rlt += p p rlt lm = min(n, 2*10**5) min(n, 2*10**5) lm p = 10 ** 9 + 7 10 ** 9 + 7 p inv = [0, 1] [0, 1] inv rlt = pow_r(2,n,p) pow_r(2,n,p) rlt rlt -= cmb(n,a,p) % p cmb(n,a,p) % p rlt factinv = [1, 1] [1, 1] factinv def pow_r(x, n, p):
  """
  O(log n)
  """
  if n == 0:  # exit case
    return 1
  if n % 2 == 0:  # standard case ① n is even
    return pow_r(x ** 2 % p, n // 2, p)
  else:  # standard case ② n is odd
    return x * pow_r(x ** 2 % p, (n - 1) // 2, p) % p def pow_r(x, n, p):
  """
  O(log n)
  """
  if n == 0:  # exit case
    return 1
  if n % 2 == 0:  # standard case ① n is even
    return pow_r(x ** 2 % p, n // 2, p)
  else:  # standard case ② n is odd
    return x * pow_r(x ** 2 % p, (n - 1) // 2, p) % p pow_r
n, a, b = map(int, input().split())

lm = min(n, 2*10**5)

# ①nCrの各項のmod(10^9+7)を事前計算
p = 10 ** 9 + 7
fact = [1, 1]  # fact[n] = (n! mod p)
factinv = [1, 1]  # factinv[n] = ((n!)^(-1) mod p)
inv = [0, 1]  # factinv 計算用

for i in range(2, lm + 1):
  fact.append((fact[-1] * i) % p)
  inv.append((-inv[p % i] * (p // i)) % p)
  factinv.append((factinv[-1] * inv[-1]) % p)

# ②事前計算した項を掛け合わせ
def cmb(n, r, p):
  if (r < 0) or (n < r):
    return 0
  r = min(r, n - r)
  rt = 1
  for i in range(r):
    rt = (rt * (n-i)) % p
  rt = rt*factinv[r] % p
  return rt

def pow_r(x, n, p):
  """
  O(log n)
  """
  if n == 0:  # exit case
    return 1
  if n % 2 == 0:  # standard case ① n is even
    return pow_r(x ** 2 % p, n // 2, p)
  else:  # standard case ② n is odd
    return x * pow_r(x ** 2 % p, (n - 1) // 2, p) % p

rlt = pow_r(2,n,p)
  
rlt -= 1


rlt -= cmb(n,a,p) % p
rlt -= cmb(n,b,p) % p

while rlt < 0:
  rlt += p

print(rlt)