# input
n,a,b = list(map(int,input().split()))
p=10**9+7

#全体の組み合わせの数：All
all_ = pow(2,n,p)

#n本からi本選ぶ組み合わせの数:C[i],i:0~b
C_=[1]*(b+10)
for i in range(1,b+1):
    C_[i] = (C_[i-1] * (n-i+1)%p * pow(i,p-2,p))%p 
# C_

ans = (all_-C_[a]-C_[b])%p
print(ans-1) 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 p=10**9+7 p 10**9+7 10**9 10 9 7 all_ = pow(2,n,p) all_ pow(2,n,p) pow 2 n p C_=[1]*(b+10) C_ [1]*(b+10) [1] 1 b+10 b 10 for i in range(1,b+1):
    C_[i] = (C_[i-1] * (n-i+1)%p * pow(i,p-2,p))%p 
# C_ i range(1,b+1) range 1 b+1 b 1 C_[i] = (C_[i-1] * (n-i+1)%p * pow(i,p-2,p))%p C_[i] C_ i (C_[i-1] * (n-i+1)%p * pow(i,p-2,p))%p C_[i-1] * (n-i+1)%p * pow(i,p-2,p) C_[i-1] * (n-i+1)%p C_[i-1] * (n-i+1) C_[i-1] C_ i-1 i 1 n-i+1 n-i n i 1 p pow(i,p-2,p) pow i p-2 p 2 p p ans = (all_-C_[a]-C_[b])%p ans (all_-C_[a]-C_[b])%p all_-C_[a]-C_[b] all_-C_[a] all_ C_[a] C_ a C_[b] C_ b p print(ans-1) print ans-1 ans 1 a,b = list(map(int,input().split())) list(map(int,input().split())) a p=10**9+7 10**9+7 p all_ = pow(2,n,p) pow(2,n,p) all_ ans = (all_-C_[a]-C_[b])%p (all_-C_[a]-C_[b])%p ans C_=[1]*(b+10) [1]*(b+10) C_ b = list(map(int,input().split())) list(map(int,input().split())) b n,a,b = list(map(int,input().split())) list(map(int,input().split())) n
# input
n,a,b = list(map(int,input().split()))
p=10**9+7

#全体の組み合わせの数：All
all_ = pow(2,n,p)

#n本からi本選ぶ組み合わせの数:C[i],i:0~b
C_=[1]*(b+10)
for i in range(1,b+1):
    C_[i] = (C_[i-1] * (n-i+1)%p * pow(i,p-2,p))%p 
# C_

ans = (all_-C_[a]-C_[b])%p
print(ans-1)