//#define DEB1 //output check function
//#define DEB2 //same output, input from input.txt

#include <iostream>
#include <algorithm>
#include <string>
#include <fstream>
#include <vector>
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <thread>
#include <mutex>

#define ZERO(a) memset(a, 0, sizeof(a))
#define MINUS(a) memset(a, 0xff, sizeof(a))
#define INF(a) memset(a, 0x3f, sizeof(a))
#define ALL(t) (t).begin(),(t).end()
#define FILL(a,c) fill(a, a+ sizeof(a)/sizeof(*a),c)
#define FILL2D(A,c) fill(A[0], A[0] +sizeof(A)/sizeof(**A),c)
#define FILL3D(A,c) fill(A[0][0], A[0][0] +sizeof(A)/sizeof(***A),c)
#define REP(i,m) for(int i=0;i<(m);++i)
#define REPN(i,m,in) for(int i=(in);i<(m);++i)
#define IN(a, x, b) (a<=x && x<b)
#define RNG(a) a.begin(),a.end()
#define pb push_back

using namespace std;

using ll = long long;
using PAIR = pair<int, int>;
using PAIRLL = pair<ll,ll>;
using vi = vector<int>;
using vvi = vector<vi>;


template<class T> inline bool chmin(T& a, T b) {
    if (a > b) {
        a = b;
        return true;
    }
    return false;
}
template<class T> inline bool chmax(T& a, T b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}


#ifdef DEB1
#define DPRINT(x) cout<< #x << "=" << (x) << endl; // print at debug mode
#else
#define DPRINT(x) ;
#endif
#ifdef DEB1
#define DCHECK(x) cout<< "debug check" << #x << endl;
#else
#define DCHECK(x) ;
#endif
 


/*
constant values
*/

//const int dx[] = {1,0,-1,0};
//const int dy[] = {0,1,0,-1};
//const int NX = 31001;
//const ll INF= 1LL<<60 ;//INF = 1001001001001; //1e9
const int MX = 200001;
const int md = 1000000007; //1e9+7

ll N,M; 
//int dp[NX];
//bool used[NX];
//vvi E; //edges
ll fac[MX], finv[MX], invL[MX]; //for factorization

/*
Library related to factorization  ------------>8
*/
inline void add(int &a, int b) {
  a += b;
  if (a >= md) a -= md;
}
 
inline void sub(int &a, int b) {
  a -= b;
  if (a < 0) a += md;
}
 
inline ll mul(ll a, ll b) {
    return (ll) ((ll) a * b % md);
}
 
inline int power(int a, long long b) {
  int res = 1; //resister
  while (b > 0) {
    if (b & 1) {  // example b = 5 (101), 1(001) then true
      res = mul(res, a);
    }
    a = mul(a, a);
    b >>= 1;  // bit shift (1011) -> (0101) same as %2
  }
  return res;
}


void factinit(){
    fac[0] = fac[1] = 1;
    finv[0] = finv[1] = 1;
    invL[1] = 1; //inverseList
    for(int i = 2; i < MX; i++){
        fac[i] = mul(fac[i-1] , i); //1*2*3*4*5*...MX
        invL[i] = md - invL[md%i] * (md/i) % md;
        finv[i] = finv[i-1] * invL[i] % md;
    }
}

ll COM(int n, int k){
    if(n < k) return 0;
    if (n < 0 || k < 0) return 0;
    return fac[n] * (finv[k] * finv[n-k] % md) % md;
    //return (finv[k] * finv[n-k] % md) % md;
}

vector<PAIR> prime_factorize(long long n) {
    // prime_factorize(12) = {(2,2),(3,1)}
    vector<PAIR> res;
    for (int p = 2; p * p <= n; ++p) {
        if (n % p != 0) continue;
        int num = 0;
        while (n % p == 0) { ++num; n /= p; }
        res.push_back(make_pair(p, num));
    }
    if (n != 1) res.push_back(make_pair(n, 1)); //n is prime number
    return res;
}

/*
End  ------------>8
*/


// Main program
void solve(){
    factinit();
    int a, b;
    cin >> N >> a >> b;

    int big;

    big = power(2,N);

    cerr << big << endl;

    ll tmp = 1;
    //n,n-1,...n-a
    REP(i,a){
        tmp = mul(tmp,N-i);
    }
    tmp = mul(tmp, finv[a]);

    big -= tmp;
    if(big<0) big+=md;

    tmp = 1;
    //n,n-1,...n-a
    REP(i,b){
        tmp = mul(tmp,N-i);
    }
    tmp = mul(tmp,finv[b]);

    big -= tmp;
    if(big<0) big+=md;
    
    big = big - 1;
    if(big<0) big+=md;

    cout << big << endl;
    return;

}



// ----------------------------------------------
int main() {

#ifdef DEB2
    cout << "DEBUG MODE"  << endl;
	ifstream in("input.txt"); //for debug
	cin.rdbuf(in.rdbuf()); //for debug
#endif

	int T=1; 

	for (int i = 0; i < T; ++i) {
		solve();
	}
}

Measured memory_bytes: 4992