MOD = 10**9 + 7



n, a, b = list(map(int, input().split()))



ans = pow(2, n, MOD) - 1



# invs[x]: xの逆元 (x:0～n)

def getInvs(n, MOD):

    invs = [1] * (n+1)

    for x in range(2, n+1):

        invs[x] = (-(MOD//x) * invs[MOD%x]) % MOD

    return invs



invs = getInvs(2*10**5, MOD)



def f(n, k):

    num = 1

    for i in range(n-k+1, n+1):

        num *= i

        num %= MOD

    for i in range(k+1):

        num *= invs[i]

        num %= MOD

    return num



numA = f(n, a)

numB = f(n, b)

#print('numA:', numA, '/ numB:', numB)



print(((ans - numA - numB) % MOD))

MOD = 10**9 + 7



N, A, B = list(map(int, input().split()))



def getComb(n, k, MOD):

    if n < k:

        return 0

    if n-k < k:

        k = n-k

    comb = 1

    for x in range(n-k+1, n+1):

        comb = (comb * x) % MOD

    d = 1

    for x in range(1, k+1):

        d = (d * x) % MOD

    comb *= pow(d, MOD-2, MOD)

    return comb % MOD



ans = pow(2, N, MOD) - 1

ans -= getComb(N, A, MOD)

ans -= getComb(N, B, MOD)

ans %= MOD



print(ans)

MOD = 10**9 + 7
n, a, b = list(map(int, input().split()))
ans = pow(2, n, MOD) - 1
# invs[x]: xの逆元 (x:0～n)
def getInvs(n, MOD):
    invs = [1] * (n + 1)
    for x in range(2, n + 1):
        invs[x] = (-(MOD // x) * invs[MOD % x]) % MOD
    return invs


invs = getInvs(2 * 10**5, MOD)


def f(n, k):
    num = 1
    for i in range(n - k + 1, n + 1):
        num *= i
        num %= MOD
    for i in range(k + 1):
        num *= invs[i]
        num %= MOD
    return num


numA = f(n, a)
numB = f(n, b)
# print('numA:', numA, '/ numB:', numB)
print(((ans - numA - numB) % MOD))

MOD = 10**9 + 7
N, A, B = list(map(int, input().split()))


def getComb(n, k, MOD):
    if n < k:
        return 0
    if n - k < k:
        k = n - k
    comb = 1
    for x in range(n - k + 1, n + 1):
        comb = (comb * x) % MOD
    d = 1
    for x in range(1, k + 1):
        d = (d * x) % MOD
    comb *= pow(d, MOD - 2, MOD)
    return comb % MOD


ans = pow(2, N, MOD) - 1
ans -= getComb(N, A, MOD)
ans -= getComb(N, B, MOD)
ans %= MOD
print(ans)

-n, a, b = list(map(int, input().split())) -ans = pow(2, n, MOD) - 1 -# invs[x]: xの逆元 (x:0～n) -def getInvs(n, MOD): -    invs = [1] * (n + 1) -    for x in range(2, n + 1): -        invs[x] = (-(MOD // x) * invs[MOD % x]) % MOD -    return invs +N, A, B = list(map(int, input().split())) -invs = getInvs(2 * 10**5, MOD) +def getComb(n, k, MOD): +    if n < k: +        return 0 +    if n - k < k: +        k = n - k +    comb = 1 +    for x in range(n - k + 1, n + 1): +        comb = (comb * x) % MOD +    d = 1 +    for x in range(1, k + 1): +        d = (d * x) % MOD +    comb *= pow(d, MOD - 2, MOD) +    return comb % MOD -def f(n, k): -    num = 1 -    for i in range(n - k + 1, n + 1): -        num *= i -        num %= MOD -    for i in range(k + 1): -        num *= invs[i] -        num %= MOD -    return num - - -numA = f(n, a) -numB = f(n, b) -# print('numA:', numA, '/ numB:', numB) -print(((ans - numA - numB) % MOD)) +ans = pow(2, N, MOD) - 1 +ans -= getComb(N, A, MOD) +ans -= getComb(N, B, MOD) +ans %= MOD +print(ans)