import std.stdio, std.conv, std.string, std.algorithm, std.math, std.array, std.container;

long mod = 1000000007;

long modpow2(long base, long x) {
  base %= mod;
  if(x==1) return base;
  if(x%2 == 0) return modpow2((base*base)%mod, x/2)%mod;
  else return (base*(modpow2((base*base)%mod, x/2)%mod))%mod;
}

long modinv(long a) {
  long b=mod, u=1, v=0;
  while(b>0) {
    long t = a/b;
    a -= t*b;
    long tmp = a;
    a = b;
    b = tmp;
    u -= t*v;
    tmp = u;
    u = v;
    v = tmp;
  }
  u %= mod;
  if(u<0) u += mod;
  return u;
}

long nCk(long n, long k) {
  long result = 1;
  k = min(n-k, k);
  for(int i=0; i<k; i++) {
    result *= n-i;
    result %= mod;
    result *= modinv(i+1);
    result %= mod;
  }
  result %= mod;
  return result;
}

void main() {
  long n, a, b;
  readf("%d %d %d\n", &n, &a, &b);
  long m = (modpow2(2, n) - 1 + mod)%mod;
  if(b<=n) m = (m - nCk(n, b) + mod) % mod;
  if(a<=n) m = (m - nCk(n, a) + mod) % mod;
  writeln(m);
}

