n,a,b=list(map(int,input().split()))
#2^n-nCa-nCbを求める
#冪乗を求める関数を求める
#2のn乗をmで割ったあまりを求める
def pow(a,n,m):
  if n==0:
    return 1
  else:
    k=pow(a*a%m,n//2,m)
    if n%2==1:
      k=k*a%m
    return k
#次は組み合わせを計算する
#まずは前処理をする
inv=[0 for i in range(200001)]
finv=[0 for i in range(200001)]
inv[1]=1
finv[1]=1
for i in range(2,200001):
  #逆元の求め方p=(p//a)*a+p%a a^(-1)=-(p//a)*(p%a)^(-1)
  inv[i]=(-(1000000007//i)*inv[1000000007%i])%1000000007
  finv[i]=finv[i-1]*inv[i]%1000000007

#nが10^7程度であればnCk=n!*(k!)*((n-k)!)を求めればいい
#nがそれより大きい時は間に合わない。ここでkが小さいことに着目すると
#nCk=n*(n-1).....*(n-k+1)*(k!)^(-1)で求められることがわかる
a_num=1
b_num=1
for i in range(n-a+1,n+1):
  a_num=i*a_num%1000000007
for i in range(n-b+1,n+1):
  b_num=i*b_num%1000000007
print((pow(2,n,1000000007)-1-a_num*finv[a]-b_num*finv[b])%1000000007)

  










 n,a,b=list(map(int,input().split())) n list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split a b def pow(a,n,m):
  if n==0:
    return 1
  else:
    k=pow(a*a%m,n//2,m)
    if n%2==1:
      k=k*a%m
    return k
#次は組み合わせを計算する
#まずは前処理をする pow if n==0:
    return 1
  else:
    k=pow(a*a%m,n//2,m)
    if n%2==1:
      k=k*a%m
    return k
#次は組み合わせを計算する
#まずは前処理をする n==0 n 0 return 1 1 k=pow(a*a%m,n//2,m) k pow(a*a%m,n//2,m) pow a*a%m a*a a a m n//2 n 2 m if n%2==1:
      k=k*a%m
     n%2==1 n%2 n 2 1 k=k*a%m k k*a%m k*a k a m return k k a a n n m m 0 for i in range(200001) for i in range(200001) i range(200001) range 200001 for i in range(200001) 0 inv=[0 for i in range(200001)] inv [0 for i in range(200001)] 0 for i in range(200001) for i in range(200001) i range(200001) range 200001 for i in range(200001) 0 finv=[0 for i in range(200001)] finv [0 for i in range(200001)] inv[1]=1 inv[1] inv 1 1 finv[1]=1 finv[1] finv 1 1 for i in range(2,200001):
  #逆元の求め方p=(p//a)*a+p%a a^(-1)=-(p//a)*(p%a)^(-1)
  inv[i]=(-(1000000007//i)*inv[1000000007%i])%1000000007
  finv[i]=finv[i-1]*inv[i]%1000000007

#nが10^7程度であればnCk=n!*(k!)*((n-k)!)を求めればいい
#nがそれより大きい時は間に合わない。ここでkが小さいことに着目すると
#nCk=n*(n-1).....*(n-k+1)*(k!)^(-1)で求められることがわかる i range(2,200001) range 2 200001 inv[i]=(-(1000000007//i)*inv[1000000007%i])%1000000007 inv[i] inv i (-(1000000007//i)*inv[1000000007%i])%1000000007 -(1000000007//i)*inv[1000000007%i] -(1000000007//i) 1000000007//i 1000000007 i inv[1000000007%i] inv 1000000007%i 1000000007 i 1000000007 finv[i]=finv[i-1]*inv[i]%1000000007 finv[i] finv i finv[i-1]*inv[i]%1000000007 finv[i-1]*inv[i] finv[i-1] finv i-1 i 1 inv[i] inv i 1000000007 a_num=1 a_num 1 b_num=1 b_num 1 for i in range(n-a+1,n+1):
  a_num=i*a_num%1000000007 i range(n-a+1,n+1) range n-a+1 n-a n a 1 n+1 n 1 a_num=i*a_num%1000000007 a_num i*a_num%1000000007 i*a_num i a_num 1000000007 for i in range(n-b+1,n+1):
  b_num=i*b_num%1000000007 i range(n-b+1,n+1) range n-b+1 n-b n b 1 n+1 n 1 b_num=i*b_num%1000000007 b_num i*b_num%1000000007 i*b_num i b_num 1000000007 print((pow(2,n,1000000007)-1-a_num*finv[a]-b_num*finv[b])%1000000007) print (pow(2,n,1000000007)-1-a_num*finv[a]-b_num*finv[b])%1000000007 pow(2,n,1000000007)-1-a_num*finv[a]-b_num*finv[b] pow(2,n,1000000007)-1-a_num*finv[a] pow(2,n,1000000007)-1 pow(2,n,1000000007) pow 2 n 1000000007 1 a_num*finv[a] a_num finv[a] finv a b_num*finv[b] b_num finv[b] finv b 1000000007 n,a,b=list(map(int,input().split())) list(map(int,input().split())) n inv=[0 for i in range(200001)] [0 for i in range(200001)] inv a_num=i*a_num%1000000007 i*a_num%1000000007 a_num b_num=1 1 b_num b=list(map(int,input().split())) list(map(int,input().split())) b a_num=1 1 a_num a,b=list(map(int,input().split())) list(map(int,input().split())) a def pow(a,n,m):
  if n==0:
    return 1
  else:
    k=pow(a*a%m,n//2,m)
    if n%2==1:
      k=k*a%m
    return k
#次は組み合わせを計算する
#まずは前処理をする def pow(a,n,m):
  if n==0:
    return 1
  else:
    k=pow(a*a%m,n//2,m)
    if n%2==1:
      k=k*a%m
    return k
#次は組み合わせを計算する
#まずは前処理をする pow b_num=i*b_num%1000000007 i*b_num%1000000007 b_num finv=[0 for i in range(200001)] [0 for i in range(200001)] finv
n,a,b=list(map(int,input().split()))
#2^n-nCa-nCbを求める
#冪乗を求める関数を求める
#2のn乗をmで割ったあまりを求める
def pow(a,n,m):
  if n==0:
    return 1
  else:
    k=pow(a*a%m,n//2,m)
    if n%2==1:
      k=k*a%m
    return k
#次は組み合わせを計算する
#まずは前処理をする
inv=[0 for i in range(200001)]
finv=[0 for i in range(200001)]
inv[1]=1
finv[1]=1
for i in range(2,200001):
  #逆元の求め方p=(p//a)*a+p%a a^(-1)=-(p//a)*(p%a)^(-1)
  inv[i]=(-(1000000007//i)*inv[1000000007%i])%1000000007
  finv[i]=finv[i-1]*inv[i]%1000000007

#nが10^7程度であればnCk=n!*(k!)*((n-k)!)を求めればいい
#nがそれより大きい時は間に合わない。ここでkが小さいことに着目すると
#nCk=n*(n-1).....*(n-k+1)*(k!)^(-1)で求められることがわかる
a_num=1
b_num=1
for i in range(n-a+1,n+1):
  a_num=i*a_num%1000000007
for i in range(n-b+1,n+1):
  b_num=i*b_num%1000000007
print((pow(2,n,1000000007)-1-a_num*finv[a]-b_num*finv[b])%1000000007)

  











