#include <iostream>

namespace cplib {
    template <typename T, typename U>
    T pow(T m, U n) {
        // m の n 乗を二分累乗法で求める

        T res = 1;
        while (n > 0) {
            if (n % 2 == 1) {
                res *= m;
            }
            m *= m;
            n /= 2;
        }
        return res;
    }

    template <int64_t mod>
    class ModInt {
        /**
         * 素数 mod を法として四則計算を行うクラス
         * std::cin, std::cout による入出力にも対応
         */

        public:
        int64_t val;

        // コンストラクタ
        ModInt(): val(0) {}
        ModInt(int64_t init_val): val(init_val >= 0? init_val % mod: mod - (-init_val) % mod) {}

        // 単項演算子
        bool operator !() {return val != 0;}
        ModInt operator -() {return ModInt(-val);}

        // インクリメント, デクリメント
        ModInt& operator ++() {
            val++;
            if (val == mod) val = 0;
            return *this;
        }
        ModInt operator ++(int) {
            ModInt temp = *this;
            val++;
            if (val == mod) val = 0;
            return temp;
        }
        ModInt& operator --() {
            if (val == 0) val = mod;
            val--;
            return *this;
        }
        ModInt operator --(int) {
            ModInt temp = *this;
            if (val == 0) val = mod;
            val--;
            return temp;
        }

        // 比較
        bool operator == (ModInt that) {return val == that.val;}
        bool operator != (ModInt that) {return val != that.val;}
        // 大小関係は数学的に意味がないので注意
        bool operator < (ModInt that) {return val < that.val;}
        bool operator <= (ModInt that) {return val <= that.val;}
        bool operator > (ModInt that) {return val > that.val;}
        bool operator >= (ModInt that) {return val >= that.val;}

        // 再代入
        ModInt& operator += (ModInt that) {
            val += that.val;
            if (val >= mod) val -= mod;
            return *this;
        }
        ModInt& operator -= (ModInt that) {
            val -= that.val;
            if (val < 0) val += mod;
            return *this;
        }
        ModInt& operator *= (ModInt that) {
            val = val * that.val % mod;
            return *this;
        }
        ModInt& operator /= (ModInt that) {
            int64_t temp = that.val, inv = 1, power = mod - 2;
            while (power > 0) {
                if (power % 2 == 1) inv = inv * temp % mod;
                temp = temp * temp % mod;
                power /= 2;
            }
            val = val * inv % mod;
            return *this;
        }

        // 二項演算
        ModInt operator + (ModInt that) {return ModInt(*this) += that;}
        ModInt operator - (ModInt that) {return ModInt(*this) -= that;}
        ModInt operator * (ModInt that) {return ModInt(*this) *= that;}
        ModInt operator / (ModInt that) {return ModInt(*this) /= that;}

        // 入出力
        friend std::istream& operator >> (std::istream& is, ModInt& target) {
            int64_t init_val;
            is >> init_val;
            target = ModInt(init_val);
            return is;
        }
        friend std::ostream& operator << (std::ostream& os, ModInt source) {
            return os << source.val;
        }
    };

    template <typename T>
    T comb(T n, T r) {
        T ans = 1;
        for (T i = 0; i < r; i++) {
            ans = ans * (n - i) / (i + 1);
        }
        return ans;
    }
}

int main() {
    using mint = cplib::ModInt<1000000007>;

    int n, a, b;
    std::cin >> n >> a >> b;

    std::cout <<
        cplib::pow((mint)2, n)
        - cplib::comb((mint)n, (mint)a)
        - cplib::comb((mint)n, (mint)b)
        - 1
        << std::endl;
    return 0;
}


Measured memory_bytes: 256