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

mod = 10**9 + 7





def neko(n, k):

    if n < k:

        return 0

    if n < 0 or k < 0:

        return 0

    k = min(n - k, k)

    ans = 1

    inv = [1] * (k + 1)

    if k >= 1:

        ans *= (n - k + 1) % mod

    for i in range(2, k + 1):

        inv[i] = mod - inv[mod % i] * (mod // i) % mod

        ans = ans * (n - k + i) * inv[i] % mod

    return ans





print(((pow(2, n, mod) - 1 - neko(n, a) - neko(n, b)) % mod))

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

mod = 10**9 + 7





def neko(n, r):

    p, q = 1, 1

    for i in range(r):

        p = p * (n - i) % mod

        q = q * (i + 1) % mod

    return p * pow(q, mod - 2, mod) % mod





print(((pow(2, n, mod) - 1 - neko(n, a) - neko(n, b)) % mod))

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


def neko(n, k):
    if n < k:
        return 0
    if n < 0 or k < 0:
        return 0
    k = min(n - k, k)
    ans = 1
    inv = [1] * (k + 1)
    if k >= 1:
        ans *= (n - k + 1) % mod
    for i in range(2, k + 1):
        inv[i] = mod - inv[mod % i] * (mod // i) % mod
        ans = ans * (n - k + i) * inv[i] % mod
    return ans


print(((pow(2, n, mod) - 1 - neko(n, a) - neko(n, b)) % mod))

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


def neko(n, r):
    p, q = 1, 1
    for i in range(r):
        p = p * (n - i) % mod
        q = q * (i + 1) % mod
    return p * pow(q, mod - 2, mod) % mod


print(((pow(2, n, mod) - 1 - neko(n, a) - neko(n, b)) % mod))

-def neko(n, k): -    if n < k: -        return 0 -    if n < 0 or k < 0: -        return 0 -    k = min(n - k, k) -    ans = 1 -    inv = [1] * (k + 1) -    if k >= 1: -        ans *= (n - k + 1) % mod -    for i in range(2, k + 1): -        inv[i] = mod - inv[mod % i] * (mod // i) % mod -        ans = ans * (n - k + i) * inv[i] % mod -    return ans +def neko(n, r): +    p, q = 1, 1 +    for i in range(r): +        p = p * (n - i) % mod +        q = q * (i + 1) % mod +    return p * pow(q, mod - 2, mod) % mod