from functools import reduce

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

mod = 10**9 + 7



def f(A):

    bunsi = reduce(lambda x, y: x*y%mod, list(range(n, n-A, -1)))

    bunbo = reduce(lambda x, y: x*y%mod, list(range(1, A+1)))

    return bunsi * pow(bunbo, mod-2, mod) % mod



ans = pow(2, n, mod) - f(a) -f(b) - 1

ans %= mod

print(ans)
from functools import reduce

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

mod = 10**9 + 7



def comb(N, A, MOD):

    num = reduce(lambda x, y: x * y % MOD, list(range(N, N - A, -1)))

    den = reduce(lambda x, y: x * y % MOD, list(range(1, A + 1)))

    return num * pow(den, MOD - 2, MOD) % MOD



print(((pow(2, n, mod) - 1 - comb(n, a, mod) - comb(n, b, mod))%mod))
from functools import reduce

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


def f(A):
    bunsi = reduce(lambda x, y: x * y % mod, list(range(n, n - A, -1)))
    bunbo = reduce(lambda x, y: x * y % mod, list(range(1, A + 1)))
    return bunsi * pow(bunbo, mod - 2, mod) % mod


ans = pow(2, n, mod) - f(a) - f(b) - 1
ans %= mod
print(ans)

from functools import reduce

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


def comb(N, A, MOD):
    num = reduce(lambda x, y: x * y % MOD, list(range(N, N - A, -1)))
    den = reduce(lambda x, y: x * y % MOD, list(range(1, A + 1)))
    return num * pow(den, MOD - 2, MOD) % MOD


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

-def f(A): -    bunsi = reduce(lambda x, y: x * y % mod, list(range(n, n - A, -1))) -    bunbo = reduce(lambda x, y: x * y % mod, list(range(1, A + 1))) -    return bunsi * pow(bunbo, mod - 2, mod) % mod +def comb(N, A, MOD): +    num = reduce(lambda x, y: x * y % MOD, list(range(N, N - A, -1))) +    den = reduce(lambda x, y: x * y % MOD, list(range(1, A + 1))) +    return num * pow(den, MOD - 2, MOD) % MOD -ans = pow(2, n, mod) - f(a) - f(b) - 1 -ans %= mod -print(ans) +print(((pow(2, n, mod) - 1 - comb(n, a, mod) - comb(n, b, mod)) % mod))