# from math import sqrt

# from heapq import heappush, heappop

# from collections import deque

from operator import mul

from functools import reduce

# a, b = [int(v) for v in input().split()]





def main():



    def modcmb(n, r, mod):

        if r < 0 or r > n:

            return 0

        r = min(r, n - r)

        over = 1

        under = 1

        for i in range(r):

            over = over * (n - i) % mod

            under = under * (i + 1) % mod



#        over = reduce(lambda v1, v2: (v1 * v2) % mod, range(n, n-r, -1))

#        under = reduce(lambda v1, v2: (v1 * v2) % mod, range(1, r+1))

        return (over * pow(under, mod - 2, mod)) % mod



    mod = 1000000007

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



    count = pow(2, n, mod) - 1

    count -= modcmb(n, a, mod)

    count -= modcmb(n, b, mod)



    while count < 0:

        count += mod

    print((count % mod))





main()

# from math import sqrt

# from heapq import heappush, heappop

# from collections import deque

from operator import mul

from functools import reduce

# a, b = [int(v) for v in input().split()]





def main():



    def modcmb(n, r, mod):

        if r < 0 or r > n:

            return 0

        r = min(r, n - r)

        over = 1

        under = 1

        for i in range(n, n-r, -1):

            over = over * i % mod

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

            under = under * i % mod



#        over = reduce(lambda v1, v2: (v1 * v2) % mod, range(n, n-r, -1))

#        under = reduce(lambda v1, v2: (v1 * v2) % mod, range(1, r+1))

        return (over * pow(under, mod - 2, mod)) % mod



    mod = 1000000007

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



    count = pow(2, n, mod) - 1

    count -= modcmb(n, a, mod)

    count -= modcmb(n, b, mod)



    while count < 0:

        count += mod

    print((count % mod))





main()

# from math import sqrt
# from heapq import heappush, heappop
# from collections import deque
from operator import mul
from functools import reduce

# a, b = [int(v) for v in input().split()]
def main():
    def modcmb(n, r, mod):
        if r < 0 or r > n:
            return 0
        r = min(r, n - r)
        over = 1
        under = 1
        for i in range(r):
            over = over * (n - i) % mod
            under = under * (i + 1) % mod
        #        over = reduce(lambda v1, v2: (v1 * v2) % mod, range(n, n-r, -1))
        #        under = reduce(lambda v1, v2: (v1 * v2) % mod, range(1, r+1))
        return (over * pow(under, mod - 2, mod)) % mod

    mod = 1000000007
    n, a, b = list(map(int, input().split()))
    count = pow(2, n, mod) - 1
    count -= modcmb(n, a, mod)
    count -= modcmb(n, b, mod)
    while count < 0:
        count += mod
    print((count % mod))


main()

# from math import sqrt
# from heapq import heappush, heappop
# from collections import deque
from operator import mul
from functools import reduce

# a, b = [int(v) for v in input().split()]
def main():
    def modcmb(n, r, mod):
        if r < 0 or r > n:
            return 0
        r = min(r, n - r)
        over = 1
        under = 1
        for i in range(n, n - r, -1):
            over = over * i % mod
        for i in range(1, r + 1):
            under = under * i % mod
        #        over = reduce(lambda v1, v2: (v1 * v2) % mod, range(n, n-r, -1))
        #        under = reduce(lambda v1, v2: (v1 * v2) % mod, range(1, r+1))
        return (over * pow(under, mod - 2, mod)) % mod

    mod = 1000000007
    n, a, b = list(map(int, input().split()))
    count = pow(2, n, mod) - 1
    count -= modcmb(n, a, mod)
    count -= modcmb(n, b, mod)
    while count < 0:
        count += mod
    print((count % mod))


main()

-        for i in range(r): -            over = over * (n - i) % mod -            under = under * (i + 1) % mod +        for i in range(n, n - r, -1): +            over = over * i % mod +        for i in range(1, r + 1): +            under = under * i % mod