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



mod = 10 ** 9 + 7

k = max(a,b)

com = [1]



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

    com.append((com[i-1]*(n-i+1)*pow(i,mod-2,mod))%mod)



print(((pow(2,n,mod)-1-com[a]-com[b])%mod))
n,a,b = list(map(int,input().split()))

mod = 10 ** 9 + 7



def nCr(n,r):

    if r*2>n:

        return nCr(n,n-r)

    else:

        a = b = 1

        for i in range(r):

            a = a * (n - i) % mod

            b = b * (r - i) % mod

        return (a * pow(b,mod-2,mod)) % mod



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

print((ans%mod))
n, a, b = list(map(int, input().split()))
mod = 10**9 + 7
k = max(a, b)
com = [1]
for i in range(1, k + 1):
    com.append((com[i - 1] * (n - i + 1) * pow(i, mod - 2, mod)) % mod)
print(((pow(2, n, mod) - 1 - com[a] - com[b]) % mod))

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


def nCr(n, r):
    if r * 2 > n:
        return nCr(n, n - r)
    else:
        a = b = 1
        for i in range(r):
            a = a * (n - i) % mod
            b = b * (r - i) % mod
        return (a * pow(b, mod - 2, mod)) % mod


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

-k = max(a, b) -com = [1] -for i in range(1, k + 1): -    com.append((com[i - 1] * (n - i + 1) * pow(i, mod - 2, mod)) % mod) -print(((pow(2, n, mod) - 1 - com[a] - com[b]) % mod)) + + +def nCr(n, r): +    if r * 2 > n: +        return nCr(n, n - r) +    else: +        a = b = 1 +        for i in range(r): +            a = a * (n - i) % mod +            b = b * (r - i) % mod +        return (a * pow(b, mod - 2, mod)) % mod + + +ans = pow(2, n, mod) - 1 - nCr(n, a) - nCr(n, b) +print((ans % mod))