/* ---------- STL Libraries ---------- */
// IO library
#include <cstdio>

#include <fstream>
#include <iomanip>
#include <ios>
#include <iostream>

// algorithm library
#include <algorithm>

#include <cmath>
#include <numeric>
#include <random>
#include <cstring>

// container library
#include <array>
#include <bitset>
#include <deque>
#include <map>
#include <unordered_map>
#include <queue>
#include <set>
#include <string>
#include <tuple>
#include <vector>
#include <stack>

// type
#include <cstdint>

/* ---------- Namespace ---------- */
using namespace std;

/* ---------- Type ---------- */
using ll = long long;
#define int ll
#define P pair<ll, ll>

/* ---------- Constants  */
const double PI = 3.141592653589793238462643383279;
const ll MOD = 1e9 + 7;
const int INF = 1LL << 55;

/* v-v-v-v-v-v-v-v-v Main Part v-v-v-v-v-v-v-v-v */
int powmod(int a, int p, int mod) {
    int ans = 1;
    int mul = a;

    for (; p > 0; p >>= 1, mul = (mul * mul) % mod) {
        if ((p & 1) == 1) ans = (ans * mul) % mod;
    }

    return ans;
}

long long K[] = {
        1,
        682498929,
        491101308,
        76479948,
        723816384,
        67347853,
        27368307,
        625544428,
        199888908,
        888050723,
        927880474,
        281863274,
        661224977,
        623534362,
        970055531,
        261384175,
        195888993,
        66404266,
        547665832,
        109838563,
        933245637,
        724691727,
        368925948,
        268838846,
        136026497,
        112390913,
        135498044,
        217544623,
        419363534,
        500780548,
        668123525,
        128487469,
        30977140,
        522049725,
        309058615,
        386027524,
        189239124,
        148528617,
        940567523,
        917084264,
        429277690,
        996164327,
        358655417,
        568392357,
        780072518,
        462639908,
        275105629,
        909210595,
        99199382,
        703397904,
        733333339,
        97830135,
        608823837,
        256141983,
        141827977,
        696628828,
        637939935,
        811575797,
        848924691,
        131772368,
        724464507,
        272814771,
        326159309,
        456152084,
        903466878,
        92255682,
        769795511,
        373745190,
        606241871,
        825871994,
        957939114,
        435887178,
        852304035,
        663307737,
        375297772,
        217598709,
        624148346,
        671734977,
        624500515,
        748510389,
        203191898,
        423951674,
        629786193,
        672850561,
        814362881,
        823845496,
        116667533,
        256473217,
        627655552,
        245795606,
        586445753,
        172114298,
        193781724,
        778983779,
        83868974,
        315103615,
        965785236,
        492741665,
        377329025,
        847549272,
        698611116,
};

int fact(int n) {
    int ret = 1;
    int idx = n/10000000;
    ret *= K[idx];
    for (int i = idx * 10000000 + 1; i <= n; i++) {
        ret *= i;
        ret %= MOD;
    }

    return ret;
}

/* v-v-v-v-v-v-v-v-v Main Part v-v-v-v-v-v-v-v-v */
signed main() {
    int N, A, B;
    cin >> N >> A >> B;
    int ret = powmod(2, N, MOD);
    ret += MOD - 1;
    ret %= MOD;

    int val1 = 1;
    val1 *= fact(N);
    val1 %= MOD;
    val1 *= powmod(fact(N-A), MOD-2, MOD);
    val1 %= MOD;
    val1 *= powmod(fact(A), MOD-2, MOD);
    val1 %= MOD;

    ret += MOD - val1;
    ret %= MOD;

    int val2 = 1;
    val2 *= fact(N);
    val2 %= MOD;
    val2 *= powmod(fact(N-B), MOD-2, MOD);
    val2 %= MOD;
    val2 *= powmod(fact(B), MOD-2, MOD);
    val2 %= MOD;

    ret += MOD - val2;
    ret %= MOD;

    cout << ret << endl;
    return 0;
}

Measured memory_bytes: 256