import bisect, collections, copy, heapq, itertools, math, string
import sys
def I(): return int(sys.stdin.readline().rstrip())
def MI(): return map(int, sys.stdin.readline().rstrip().split())
def LI(): return list(map(int, sys.stdin.readline().rstrip().split()))
def S(): return sys.stdin.readline().rstrip()
def LS(): return list(sys.stdin.readline().rstrip().split())

from  collections import defaultdict
import bisect
from functools import reduce
def main():
    def comb(n, r):
        numerator = reduce(lambda x, y: x * y % mod, [n - r + k + 1 for k in range(r)])
        denominator = reduce(lambda x, y: x * y % mod, [k + 1 for k in range(r)])
        return numerator * pow(denominator, mod - 2, mod) % mod

    mod = 10 ** 9 + 7
    N, A, B = MI()
    p = pow(2, N, mod) - 1
    a = comb(N, A)
    b = comb(N, B)
    ans = (p - a - b) % mod
    print(ans)


if __name__ == "__main__":
    main() import bisect, collections, copy, heapq, itertools, math, string bisect collections copy heapq itertools math string import sys sys def I(): return int(sys.stdin.readline().rstrip()) I def MI(): return map(int, sys.stdin.readline().rstrip().split()) MI def LI(): return list(map(int, sys.stdin.readline().rstrip().split())) LI def S(): return sys.stdin.readline().rstrip() S def LS(): return list(sys.stdin.readline().rstrip().split()) LS from  collections import defaultdict import bisect bisect from functools import reduce def main():
    def comb(n, r):
        numerator = reduce(lambda x, y: x * y % mod, [n - r + k + 1 for k in range(r)])
        denominator = reduce(lambda x, y: x * y % mod, [k + 1 for k in range(r)])
        return numerator * pow(denominator, mod - 2, mod) % mod

    mod = 10 ** 9 + 7
    N, A, B = MI()
    p = pow(2, N, mod) - 1
    a = comb(N, A)
    b = comb(N, B)
    ans = (p - a - b) % mod
    print(ans) main def comb(n, r):
        numerator = reduce(lambda x, y: x * y % mod, [n - r + k + 1 for k in range(r)])
        denominator = reduce(lambda x, y: x * y % mod, [k + 1 for k in range(r)])
        return numerator * pow(denominator, mod - 2, mod) % mod

     comb n - r + k + 1 for k in range(r) for k in range(r) k range(r) range r for k in range(r) n - r + k + 1 n - r + k n - r n r k 1 numerator = reduce(lambda x, y: x * y % mod, [n - r + k + 1 for k in range(r)]) numerator reduce(lambda x, y: x * y % mod, [n - r + k + 1 for k in range(r)]) reduce lambda x, y: x * y % mod x * y % mod x * y x y mod x y [n - r + k + 1 for k in range(r)] k + 1 for k in range(r) for k in range(r) k range(r) range r for k in range(r) k + 1 k 1 denominator = reduce(lambda x, y: x * y % mod, [k + 1 for k in range(r)]) denominator reduce(lambda x, y: x * y % mod, [k + 1 for k in range(r)]) reduce lambda x, y: x * y % mod x * y % mod x * y x y mod x y [k + 1 for k in range(r)] return numerator * pow(denominator, mod - 2, mod) % mod numerator * pow(denominator, mod - 2, mod) % mod numerator * pow(denominator, mod - 2, mod) numerator pow(denominator, mod - 2, mod) pow denominator mod - 2 mod 2 mod mod n n r r mod = 10 ** 9 + 7 mod 10 ** 9 + 7 10 ** 9 10 9 7 N, A, B = MI() N MI() MI A B p = pow(2, N, mod) - 1 p pow(2, N, mod) - 1 pow(2, N, mod) pow 2 N mod 1 a = comb(N, A) a comb(N, A) comb N A b = comb(N, B) b comb(N, B) comb N B ans = (p - a - b) % mod ans (p - a - b) % mod p - a - b p - a p a b mod print(ans) print ans if __name__ == "__main__":
    main() __name__ == "__main__" __name__ "__main__" main() main def LI(): return list(map(int, sys.stdin.readline().rstrip().split())) def LI(): return list(map(int, sys.stdin.readline().rstrip().split())) LI def MI(): return map(int, sys.stdin.readline().rstrip().split()) def MI(): return map(int, sys.stdin.readline().rstrip().split()) MI def main():
    def comb(n, r):
        numerator = reduce(lambda x, y: x * y % mod, [n - r + k + 1 for k in range(r)])
        denominator = reduce(lambda x, y: x * y % mod, [k + 1 for k in range(r)])
        return numerator * pow(denominator, mod - 2, mod) % mod

    mod = 10 ** 9 + 7
    N, A, B = MI()
    p = pow(2, N, mod) - 1
    a = comb(N, A)
    b = comb(N, B)
    ans = (p - a - b) % mod
    print(ans) def main():
    def comb(n, r):
        numerator = reduce(lambda x, y: x * y % mod, [n - r + k + 1 for k in range(r)])
        denominator = reduce(lambda x, y: x * y % mod, [k + 1 for k in range(r)])
        return numerator * pow(denominator, mod - 2, mod) % mod

    mod = 10 ** 9 + 7
    N, A, B = MI()
    p = pow(2, N, mod) - 1
    a = comb(N, A)
    b = comb(N, B)
    ans = (p - a - b) % mod
    print(ans) main def LS(): return list(sys.stdin.readline().rstrip().split()) def LS(): return list(sys.stdin.readline().rstrip().split()) LS def S(): return sys.stdin.readline().rstrip() def S(): return sys.stdin.readline().rstrip() S def I(): return int(sys.stdin.readline().rstrip()) def I(): return int(sys.stdin.readline().rstrip()) I
import bisect, collections, copy, heapq, itertools, math, string
import sys
def I(): return int(sys.stdin.readline().rstrip())
def MI(): return map(int, sys.stdin.readline().rstrip().split())
def LI(): return list(map(int, sys.stdin.readline().rstrip().split()))
def S(): return sys.stdin.readline().rstrip()
def LS(): return list(sys.stdin.readline().rstrip().split())

from  collections import defaultdict
import bisect
from functools import reduce
def main():
    def comb(n, r):
        numerator = reduce(lambda x, y: x * y % mod, [n - r + k + 1 for k in range(r)])
        denominator = reduce(lambda x, y: x * y % mod, [k + 1 for k in range(r)])
        return numerator * pow(denominator, mod - 2, mod) % mod

    mod = 10 ** 9 + 7
    N, A, B = MI()
    p = pow(2, N, mod) - 1
    a = comb(N, A)
    b = comb(N, B)
    ans = (p - a - b) % mod
    print(ans)


if __name__ == "__main__":
    main()
