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

from functools import lru_cache

MOD = 10**9+7
fact = [1]
fact_inv = [1]
fact_rev = [1]

for i in range(1, max(a,b)+1):
    fact.append(fact[i-1] * i % MOD)
    fact_inv.append(pow(fact[i], MOD-2, MOD))
    fact_rev.append(fact_rev[i-1] * (n-i+1) % MOD)

@lru_cache(maxsize=None)
def combi(n, k):
    if n < k:
        return 0
    if n < 0 or k < 0:
        return 0
    return fact_rev[n] * fact_inv[k] % MOD

pattern = pow(2, n, MOD) - 1 
if a==b:
    pattern -= (combi(a, a))
else:
    pattern -= (combi(a, a) + combi(b, b))

print(pattern%MOD) 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 MOD = 10**9 + 7 MOD 10**9 + 7 10**9 10 9 7 from functools import lru_cache MOD = 10**9+7 MOD 10**9+7 10**9 10 9 7 fact = [1] fact [1] 1 fact_inv = [1] fact_inv [1] 1 fact_rev = [1] fact_rev [1] 1 for i in range(1, max(a,b)+1):
    fact.append(fact[i-1] * i % MOD)
    fact_inv.append(pow(fact[i], MOD-2, MOD))
    fact_rev.append(fact_rev[i-1] * (n-i+1) % MOD) i range(1, max(a,b)+1) range 1 max(a,b)+1 max(a,b) max a b 1 fact.append(fact[i-1] * i % MOD) fact.append fact append fact[i-1] * i % MOD fact[i-1] * i fact[i-1] fact i-1 i 1 i MOD fact_inv.append(pow(fact[i], MOD-2, MOD)) fact_inv.append fact_inv append pow(fact[i], MOD-2, MOD) pow fact[i] fact i MOD-2 MOD 2 MOD fact_rev.append(fact_rev[i-1] * (n-i+1) % MOD) fact_rev.append fact_rev append fact_rev[i-1] * (n-i+1) % MOD fact_rev[i-1] * (n-i+1) fact_rev[i-1] fact_rev i-1 i 1 n-i+1 n-i n i 1 MOD def combi(n, k):
    if n < k:
        return 0
    if n < 0 or k < 0:
        return 0
    return fact_rev[n] * fact_inv[k] % MOD combi if n < k:
        return 0
     n < k n k return 0 0 if n < 0 or k < 0:
        return 0
     n < 0 or k < 0 n < 0 n 0 k < 0 k 0 return 0 0 return fact_rev[n] * fact_inv[k] % MOD fact_rev[n] * fact_inv[k] % MOD fact_rev[n] * fact_inv[k] fact_rev[n] fact_rev n fact_inv[k] fact_inv k MOD n n k k @lru_cache(maxsize=None) combi maxsize=None @lru_cache(maxsize=None) lru_cache maxsize=None maxsize None combi pattern = pow(2, n, MOD) - 1 pattern pow(2, n, MOD) - 1 pow(2, n, MOD) pow 2 n MOD 1 if a==b:
    pattern -= (combi(a, a))
else:
    pattern -= (combi(a, a) + combi(b, b)) a==b a b pattern -= (combi(a, a)) pattern combi(a, a) combi a a pattern -= (combi(a, a) + combi(b, b)) pattern combi(a, a) + combi(b, b) combi(a, a) combi a a combi(b, b) combi b b print(pattern%MOD) print pattern%MOD pattern MOD n,a,b = list(map(int, input().split())) list(map(int, input().split())) n fact_rev = [1] [1] fact_rev MOD = 10**9 + 7 10**9 + 7 MOD pattern = pow(2, n, MOD) - 1 pow(2, n, MOD) - 1 pattern pattern -= (combi(a, a) + combi(b, b)) combi(a, a) + combi(b, b) pattern def combi(n, k):
    if n < k:
        return 0
    if n < 0 or k < 0:
        return 0
    return fact_rev[n] * fact_inv[k] % MOD def combi(n, k):
    if n < k:
        return 0
    if n < 0 or k < 0:
        return 0
    return fact_rev[n] * fact_inv[k] % MOD combi fact = [1] [1] fact b = list(map(int, input().split())) list(map(int, input().split())) b fact_inv = [1] [1] fact_inv pattern -= (combi(a, a)) combi(a, a) pattern a,b = list(map(int, input().split())) list(map(int, input().split())) a MOD = 10**9+7 10**9+7 MOD
n,a,b = list(map(int, input().split()))
MOD = 10**9 + 7

from functools import lru_cache

MOD = 10**9+7
fact = [1]
fact_inv = [1]
fact_rev = [1]

for i in range(1, max(a,b)+1):
    fact.append(fact[i-1] * i % MOD)
    fact_inv.append(pow(fact[i], MOD-2, MOD))
    fact_rev.append(fact_rev[i-1] * (n-i+1) % MOD)

@lru_cache(maxsize=None)
def combi(n, k):
    if n < k:
        return 0
    if n < 0 or k < 0:
        return 0
    return fact_rev[n] * fact_inv[k] % MOD

pattern = pow(2, n, MOD) - 1 
if a==b:
    pattern -= (combi(a, a))
else:
    pattern -= (combi(a, a) + combi(b, b))

print(pattern%MOD)