Problem:
Score : 400 points

Problem 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.

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.)

Sample Input 1

4 1 3

Sample Output 1

7

In this case, Akari can choose 2 or 4 flowers to make the bouquet.

There are 6 ways to choose 2 out of the 4 flowers, and 1 way to choose 4, so there are a total of 7 different bouquets that Akari can make.

Sample Input 2

1000000000 141421 173205

Sample Output 2

34076506

Print the count modulo (10^9 + 7).

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include<bits/stdc++.h>
using namespace std;
#define de_x(x) cout<<"debug_val: "<<x<<endl;
#define de_ve(x) for(auto it: x) cout<<it<<" ";
#define rep(i,a,n) for (int i=a;i<n;i++)
#define _rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
#define all(x) (x).begin(),(x).end()
typedef long long ll;
typedef vector<int> VI;
typedef pair<int,int> PII;
typedef double db;
std::mt19937 mrand(random_device{}());
int rnd(int x) { return mrand() % x ; }
const ll mod=1000000007;
ll ksm(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
int _;
/***********************/

void run(){

}
const int N =4e5+10;
long  n,a,b;
long  f[N],invf[N];
long  Con(int n,int k){
    int x =1,y =1;
    for(int i=1;i<=k;i++){
        x = x* (n - i+1)%mod;
        y = y*i%mod;
    }
    return x * ksm(y,mod-2)%mod;
}
int main(){
//  for(scanf("%d",&_);_;_--) run();
    f[0]=invf[0]=f[1]=invf[1]=1;
    for(int i=2;i<N;i++){
        f[i] =f[i-1]*i%mod;
        invf[i]=(mod - mod/i)*invf[mod%i]%mod;
    }
    for(int i=2;i<N;i++)
        invf[i] =invf[i-1]*invf[i]%mod;
    cin>>n>>a>>b;
    long ans = ksm(2,n);
    ans -= Con(n,a);
    ans -= Con(n,b);
    ans--;
    ans = (ans%mod+mod)%mod;
    cout<<ans<<endl;
    return 0;
}