#include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <string>
    #include <vector>
    #include <algorithm>
    #include <set>
    #include <map>
    #include <cmath>
    #include <ctime>
    #include <functional>
    #include <sstream>
    #include <fstream>
    #include <valarray>
    #include <complex>
    #include <queue>
    #include <cassert>
    #include <bitset>
    using namespace std;
    #ifdef LOCAL
    	#define debug_flag 1
    #else
    	#define debug_flag 0
    #endif
    template <class T1, class T2 >
    std::ostream& operator << (std::ostream& os, const pair<T1, T2> &p) 
    {
    	os << "[" << p.first << ", " << p.second << "]";
    	return os;
    }
    template <class T >
    std::ostream& operator << (std::ostream& os, const std::vector<T>& v) 
    {
    	os << "[";
    	bool first = true;
    	for (typename std::vector<T>::const_iterator it = v.begin(); it != v.end(); ++it)
    	{
    		if (!first)
    			os << ", ";
    		first = false;
    		os << *it;
    	}
    	os << "]";
    	return os;
    }
    #define dbg(args...) { if (debug_flag) { _print(_split(#args, ',').begin(), args); cerr << endl; } else { void(0);} }
    vector<string> _split(const string& s, char c) {
    	vector<string> v;
    	stringstream ss(s);
    	string x;
    	while (getline(ss, x, c))
    		v.emplace_back(x);
    	return v;
    }
    void _print(vector<string>::iterator) {}
    template<typename T, typename... Args>
    void _print(vector<string>::iterator it, T a, Args... args) {
        string name = it -> substr((*it)[0] == ' ', it -> length());
        if (isalpha(name[0]))
    	    cerr << name  << " = " << a << " ";
    	else
    	    cerr << name << " ";
    	_print(++it, args...);
    }
    typedef long long int int64;
    int prec[] = {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};
    const int64 mod = 1e9+7;
    const int STEP = (int)1e7;
    int64 add(int64 a, int64 b) {
      a += b;
      if (a >= mod) {
        a -= mod;
      }
      return a;
    }
    int64 sub(int64 a, int64 b) {
      a -= b;
      if (a < 0) {
        a += mod;
      }
      return a;
    }
    int64 mul(int64 a, int64 b) {
      return a * b % mod;
    }
    int64 bin_pow(int64 a, int64 st) {
      int64 res = 1;
      while (st > 0) {
        if (st % 2 == 1) {
          res = mul(res, a);
        }
        a = mul(a, a);
        st /= 2;
      }
      return res;
    }
    int64 get_fact(int64 n) {
      int64 f = prec[n / STEP];
      while (n % STEP != 0) {
        f = mul(f, n);
        n--;
      }
      return f;
    }
    int64 get_rev_fact(int64 n) {
      int64 f = get_fact(n);
      return bin_pow(f, mod - 2);
    }
    int64 get_c(int64 n, int64 k) {
      return mul(get_fact(n), mul(get_rev_fact(k), get_rev_fact(n - k)));
    }
    void gen() {
      printf("int prec[] = {");
      bool first = true;
      int f = 1;
      for (int i = 1; i < mod; i++) {
        f = mul(f, i);
        if (i % STEP == 0) {
          if (!first) {
            printf(", ");
          }
          first = false;
          printf("%d", f);
        }
      }
      printf("};\n");
    }
    int main()
    {
    #ifdef LOCAL
    	freopen ("input.txt", "r", stdin);
    #endif
      int64 n, a,b;
      cin>>n>>a>>b;
     int64 fa = get_c(n,a);
     int64 fb = get_c(n,b);
      int64 ans = (fa + fb)%mod;

      int64 all = bin_pow((int64)2,n);
      all = sub(all, (int64)1);
      ans = sub(all, ans);

      cout<<ans<<"\n";
    	return 0;
    }



Measured memory_bytes: 256