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.

Constraints

* All values in input are integers.
* 2 \leq n \leq 10^9
* 1 \leq a < b \leq \textrm{min}(n, 2 \times 10^5)

Input

Input is given from Standard Input in the following format:


n a b


Output

Print the number of bouquets that Akari can make, modulo (10^9 + 7). (If there are no such bouquets, print `0`.)

Examples

Input

4 1 3


Output

7


Input

1000000000 141421 173205


Output

34076506
import java.util.Scanner;

public class Main {
  private static final long mod = 1000_000_000 + 7;

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int a = sc.nextInt();
    int b = sc.nextInt();
    // #use-or-not - #empty - #a - #b
    // 2^n -1 - #a - #b
    long ans = pow(2, n);
    ans--;
    ans -= select(n, a);
    if (ans < 0) {
      ans += mod;
    }
    ans -= select(n, b);
    if (ans < 0) {
      ans += mod;
    }
    System.out.println(ans % mod);
  }
  // C(n,k)
  private static long select(int n, int k) {
    long nume = 1;
    for (int i = n; i >= n - k + 1; i--) {
      nume *= i;
      nume %= mod;
    }
    long factK = 1;
    for (int i = 1; i <= k; i++) {
      factK *= i;
      factK %= mod;
    }
    // fermat small theorem.
    return (nume* pow(factK, mod - 2)) % mod;
  }

  private static long pow(long base, long b) {
    long ans = 1;
    do {
      if (b % 2 == 1) {
        ans *= base;
        ans %= mod;
        b--;
        if (b == 0) break;
      }
      b /= 2;
      base *= base;
      base %= mod;
    } while (b > 0);
    return ans;
  }
}
