output_description: Print the number of bouquets that Akari can make, modulo (10^9 + 7). (If there
  are no such bouquets, print `0`.)
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      n a b
attempt: # TODO: P3: Create modint library with Python
  """
  【競プロ】繰り返し二乗法と再帰関数
  https://math.nakaken88.com/textbook/cp-binary-exponentiation-and-recursive-function/
  「1000000007 で割ったあまり」の求め方を総特集！ 〜 逆元から離散対数まで 〜
  https://qiita.com/drken/items/3b4fdf0a78e7a138cd9a
  Pythonでmodintを実装してみた
  https://qiita.com/wotsushi/items/c936838df992b706084c
  
  """
  # No mod
  
  # def pow(a,n):
  #     """
  #     繰り返し二乗法 (半分の数の 2 乗)
  #     a の n 乗を O(logN) で計算する
  #     """
  #     if n == 0:
  #         return 1
  #     x = pow(a, n//2)
  #     x *= x
  #     if n%2 == 1:
  #         x *= a
  #     return x
  # def choose(n, a):
  #     """
  #     nCa (n 個から a 個選ぶ組み合わせ)
  #         分子: n!
  #         分母: a! * (n-a)!
  #     約分して
  #         分子: n * (n-1) * ... * (n-a+1) = (n-i) の積の和 (i=0 ~ a-1)
  #         分母: a!
  #     逆元
  #      フェルマーの小定理より
  #         1 ≡ x**(p-1) (mod p)
  #         => 1/x ≡ x**(p-2) (mod p)
  #         => 1/x%p = x**(p-2)%2
  #     """
  #     x = 1 # 分子
  #     y = 1 # 分母
  #     for i in range(a):
  #         x *= n-i
  #         y *= i+1
  #     pow
  #     return x / y
  
  
  def pow(a, n, MOD):
      """
      繰り返し二乗法 (半分の数の 2 乗)
      Compute nth power of a -- O(logn)
      """
      if n == 0:
          return 1
      x = pow(a, n // 2, MOD)
      x = (x % MOD * x % MOD) % MOD
      if n % 2 == 1:
          x = (x % MOD * a % MOD) % MOD
      return x
  
  
  def choose(n, a, MOD):
      """
      nCa (Choose a from n)
          numerator (分子): n!
          denominator(分母): a! * (n-a)!
      Reduce... (約分)
          numerator:: n * (n-1) * ... * (n-a+1) = (n-i) の積の和 (i=0 ~ a-1)
          denominator: a!
      iverse (逆元)
       フェルマーの小定理
          1 ≡ x**(p-1) (mod p)
          => 1/x ≡ x**(p-2) (mod p)
          => 1/x%p = x**(p-2)%2
      """
      x = 1  # numerator
      y = 1  # denominator
      for i in range(a):
          x = (x % MOD * (n - i) % MOD) % MOD
          y = (y % MOD * (i + 1) % MOD) % MOD
      return (x * pow(y, MOD - 2, MOD)) % MOD
  
  
  """
  AC: https://atcoder.jp/contests/abc156/submissions/10294982
  N**2 - 1 - nCa - nCb
  
  pow(2,n)
  140625001
  nCa
  -483404860
  nCb
  589953354
  """
  
  n, a, b = map(int, input().split())
  MOD = 1000000007
  # n,a,b = 4,1,3
  # n,a,b = 1000000000,141421,173205
  
  ans = pow(2, n, MOD)
  ans -= 1
  ans = (ans % MOD - choose(n, a, MOD)) % MOD
  ans = (ans % MOD - choose(n, b, MOD)) % MOD
  print(ans)
  
problem_description: Statement
  
  Akari has n kinds of flowers, one of each kind.
  
  She is going to choose one or more of these flowers to make a bouquet.
  
  However, she hates two numbers a and b, so the number of flowers in the
  bouquet cannot be a or b.
  
  How many different bouquets are there that Akari can make?
  
  Find the count modulo (10^9 + 7).
  
  Here, two bouquets are considered different when there is a flower that is
  used in one of the bouquets but not in the other bouquet.
samples: [{"input": "4 1 3", "output": "7\n    \n\nIn this case, Akari can choose 2 or 4 flowers to make the bouquet.\n\nThere are 6 ways to choose 2 out of the 4 flowers, and 1 way to choose 4, so\nthere are a total of 7 different bouquets that Akari can make.\n\n* * *"}, {"input": "1000000000 141421 173205", "output": "34076506\n    \n\nPrint the count modulo (10^9 + 7)."}]