import sys
input = lambda : sys.stdin.readline().rstrip()
sys.setrecursionlimit(max(1000, 10**9))
write = lambda x: sys.stdout.write(x+"\n")




n,a,b = map(int, input().split())
M = 10**9+7
N = 2*10**5+3 # 必要なテーブルサイズ

def cmb(n, r, M):
    if ( r<0 or r>n ):
        return 0
    r = min(r, n-r)
    return (g1[n] * g2[r] * g2[n-r]) % M

g1 = [None] * (N+1) # 元テーブル
g2 = [None] * (N+1) #逆元テーブル
inverse = [None] * (N+1) #逆元テーブル計算用テーブル
g1[0] = g1[1] = g2[0] = g2[1] = 1
inverse[0], inverse[1] = [0, 1] 

for i in range( 2, N + 1 ):
    g1[i] = ( g1[i-1] * i ) % M 
    inverse[i] = ( -inverse[M % i] * (M//i) ) % M # ai+b==0 mod M <=> i==-b*a^(-1) <=> i^(-1)==-b^(-1)*aより
    g2[i] = (g2[i-1] * inverse[i]) % M 

def cmb2(n,r,M):
    res = 1
    for i in range(r):
        res *= (n-i)
        res %= M
#     print(res)
    res *= g2[r]
    res %= M
    return res
    
ans = pow(2, n, M) - cmb2(n,a,M) - cmb2(n,b,M) - 1
print(ans%M) import sys sys input = lambda : sys.stdin.readline().rstrip() input lambda : sys.stdin.readline().rstrip() sys.stdin.readline().rstrip() sys.stdin.readline().rstrip sys.stdin.readline() sys.stdin.readline sys.stdin sys stdin readline rstrip sys.setrecursionlimit(max(1000, 10**9)) sys.setrecursionlimit sys setrecursionlimit max(1000, 10**9) max 1000 10**9 10 9 write = lambda x: sys.stdout.write(x+"\n") write lambda x: sys.stdout.write(x+"\n") sys.stdout.write(x+"\n") sys.stdout.write sys.stdout sys stdout write x+"\n" x "\n" x n,a,b = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split a b M = 10**9+7 M 10**9+7 10**9 10 9 7 N = 2*10**5+3 N 2*10**5+3 2*10**5 2 10**5 10 5 3 def cmb(n, r, M):
    if ( r<0 or r>n ):
        return 0
    r = min(r, n-r)
    return (g1[n] * g2[r] * g2[n-r]) % M cmb if ( r<0 or r>n ):
        return 0
     r<0 or r>n r<0 r 0 r>n r n return 0 0 r = min(r, n-r) r min(r, n-r) min r n-r n r return (g1[n] * g2[r] * g2[n-r]) % M (g1[n] * g2[r] * g2[n-r]) % M g1[n] * g2[r] * g2[n-r] g1[n] * g2[r] g1[n] g1 n g2[r] g2 r g2[n-r] g2 n-r n r M n n r r M M g1 = [None] * (N+1) g1 [None] * (N+1) [None] None N+1 N 1 g2 = [None] * (N+1) g2 [None] * (N+1) [None] None N+1 N 1 inverse = [None] * (N+1) inverse [None] * (N+1) [None] None N+1 N 1 g1[0] = g1[1] = g2[0] = g2[1] = 1 g1[0] g1 0 1 = g1[1] = g2[0] = g2[1] = 1 g1[1] g1 1 1 g2[0] g2 0 g2[1] g2 1 inverse[0], inverse[1] = [0, 1] inverse[0] inverse 0 [0, 1] 0 1 inverse[1] inverse 1 for i in range( 2, N + 1 ):
    g1[i] = ( g1[i-1] * i ) % M 
    inverse[i] = ( -inverse[M % i] * (M//i) ) % M # ai+b==0 mod M <=> i==-b*a^(-1) <=> i^(-1)==-b^(-1)*aより
    g2[i] = (g2[i-1] * inverse[i]) % M  i range( 2, N + 1 ) range 2 N + 1 N 1 g1[i] = ( g1[i-1] * i ) % M g1[i] g1 i ( g1[i-1] * i ) % M g1[i-1] * i g1[i-1] g1 i-1 i 1 i M inverse[i] = ( -inverse[M % i] * (M//i) ) % M inverse[i] inverse i ( -inverse[M % i] * (M//i) ) % M -inverse[M % i] * (M//i) -inverse[M % i] inverse[M % i] inverse M % i M i M//i M i M g2[i] = (g2[i-1] * inverse[i]) % M g2[i] g2 i (g2[i-1] * inverse[i]) % M g2[i-1] * inverse[i] g2[i-1] g2 i-1 i 1 inverse[i] inverse i M def cmb2(n,r,M):
    res = 1
    for i in range(r):
        res *= (n-i)
        res %= M
#     print(res)
    res *= g2[r]
    res %= M
    return res
     cmb2 res = 1 res 1 for i in range(r):
        res *= (n-i)
        res %= M
#     print(res)
     i range(r) range r res *= (n-i) res n-i n i res %= M res M res *= g2[r] res g2[r] g2 r res %= M res M return res res n n r r M M ans = pow(2, n, M) - cmb2(n,a,M) - cmb2(n,b,M) - 1 ans pow(2, n, M) - cmb2(n,a,M) - cmb2(n,b,M) - 1 pow(2, n, M) - cmb2(n,a,M) - cmb2(n,b,M) pow(2, n, M) - cmb2(n,a,M) pow(2, n, M) pow 2 n M cmb2(n,a,M) cmb2 n a M cmb2(n,b,M) cmb2 n b M 1 print(ans%M) print ans%M ans M write = lambda x: sys.stdout.write(x+"\n") lambda x: sys.stdout.write(x+"\n") write b = map(int, input().split()) map(int, input().split()) b def cmb2(n,r,M):
    res = 1
    for i in range(r):
        res *= (n-i)
        res %= M
#     print(res)
    res *= g2[r]
    res %= M
    return res
     def cmb2(n,r,M):
    res = 1
    for i in range(r):
        res *= (n-i)
        res %= M
#     print(res)
    res *= g2[r]
    res %= M
    return res
     cmb2 g2 = [None] * (N+1) [None] * (N+1) g2 N = 2*10**5+3 2*10**5+3 N def cmb(n, r, M):
    if ( r<0 or r>n ):
        return 0
    r = min(r, n-r)
    return (g1[n] * g2[r] * g2[n-r]) % M def cmb(n, r, M):
    if ( r<0 or r>n ):
        return 0
    r = min(r, n-r)
    return (g1[n] * g2[r] * g2[n-r]) % M cmb inverse = [None] * (N+1) [None] * (N+1) inverse ans = pow(2, n, M) - cmb2(n,a,M) - cmb2(n,b,M) - 1 pow(2, n, M) - cmb2(n,a,M) - cmb2(n,b,M) - 1 ans M = 10**9+7 10**9+7 M a,b = map(int, input().split()) map(int, input().split()) a g1 = [None] * (N+1) [None] * (N+1) g1 input = lambda : sys.stdin.readline().rstrip() lambda : sys.stdin.readline().rstrip() input n,a,b = map(int, input().split()) map(int, input().split()) n
import sys
input = lambda : sys.stdin.readline().rstrip()
sys.setrecursionlimit(max(1000, 10**9))
write = lambda x: sys.stdout.write(x+"\n")




n,a,b = map(int, input().split())
M = 10**9+7
N = 2*10**5+3 # 必要なテーブルサイズ

def cmb(n, r, M):
    if ( r<0 or r>n ):
        return 0
    r = min(r, n-r)
    return (g1[n] * g2[r] * g2[n-r]) % M

g1 = [None] * (N+1) # 元テーブル
g2 = [None] * (N+1) #逆元テーブル
inverse = [None] * (N+1) #逆元テーブル計算用テーブル
g1[0] = g1[1] = g2[0] = g2[1] = 1
inverse[0], inverse[1] = [0, 1] 

for i in range( 2, N + 1 ):
    g1[i] = ( g1[i-1] * i ) % M 
    inverse[i] = ( -inverse[M % i] * (M//i) ) % M # ai+b==0 mod M <=> i==-b*a^(-1) <=> i^(-1)==-b^(-1)*aより
    g2[i] = (g2[i-1] * inverse[i]) % M 

def cmb2(n,r,M):
    res = 1
    for i in range(r):
        res *= (n-i)
        res %= M
#     print(res)
    res *= g2[r]
    res %= M
    return res
    
ans = pow(2, n, M) - cmb2(n,a,M) - cmb2(n,b,M) - 1
print(ans%M)