import math

def main():
	n, a, b = [int(x) for x in input().split(" ")]
	# 2^n - 1 - nCa - nCb
	p = 1000000007
	a = min([a, n - a])
	b = min([b, n - b])
	M = max([a, b])
	f = [1, 1]
	finv = []
	for i in range(M):
		f.append((f[-1] * (i + 2)) % p)
	lf = len(f)
	finv.append(modpower(f[-1], p - 2, p))
	for i in range(lf - 1):
		finv.append((finv[-1] * (lf - i - 1)) % p)
	na = 1
	nb = 1
	for i in range(M):
		if a > i:
			na = (na * (n - i)) % p
		if b > i:
			nb = (nb * (n - i)) % p
	print((modpower(2, n, p) - 1 - (na * finv[lf - 1 - a]) % p - (nb * finv[lf - 1 - b]) % p) % p)


def modpower(a, p, d): # a^p % d
	pp = [a]
	for i in range(int(math.log2(p)) + 1):
		pp.append((pp[-1] ** 2) % d)
	b_p = format(p, 'b')
	m = 1
	for i in range(len(b_p)):
		if b_p[-i-1] == "1":
			m = (m * pp[i]) % d
	return m

main() import math math def main():
	n, a, b = [int(x) for x in input().split(" ")]
	# 2^n - 1 - nCa - nCb
	p = 1000000007
	a = min([a, n - a])
	b = min([b, n - b])
	M = max([a, b])
	f = [1, 1]
	finv = []
	for i in range(M):
		f.append((f[-1] * (i + 2)) % p)
	lf = len(f)
	finv.append(modpower(f[-1], p - 2, p))
	for i in range(lf - 1):
		finv.append((finv[-1] * (lf - i - 1)) % p)
	na = 1
	nb = 1
	for i in range(M):
		if a > i:
			na = (na * (n - i)) % p
		if b > i:
			nb = (nb * (n - i)) % p
	print((modpower(2, n, p) - 1 - (na * finv[lf - 1 - a]) % p - (nb * finv[lf - 1 - b]) % p) % p) main int(x) for x in input().split(" ") for x in input().split(" ") x input().split(" ") ().split () input split " " for x in input().split(" ") int(x) int x n, a, b = [int(x) for x in input().split(" ")] n [int(x) for x in input().split(" ")] a b p = 1000000007 p 1000000007 a = min([a, n - a]) a min([a, n - a]) min [a, n - a] a n - a n a b = min([b, n - b]) b min([b, n - b]) min [b, n - b] b n - b n b M = max([a, b]) M max([a, b]) max [a, b] a b f = [1, 1] f [1, 1] 1 1 finv = [] finv [] for i in range(M):
		f.append((f[-1] * (i + 2)) % p)
	 i range(M) range M f.append((f[-1] * (i + 2)) % p) f.append f append (f[-1] * (i + 2)) % p f[-1] * (i + 2) f[-1] f -1 i + 2 i 2 p lf = len(f) lf len(f) len f finv.append(modpower(f[-1], p - 2, p)) finv.append finv append modpower(f[-1], p - 2, p) modpower f[-1] f -1 p - 2 p 2 p for i in range(lf - 1):
		finv.append((finv[-1] * (lf - i - 1)) % p)
	 i range(lf - 1) range lf - 1 lf 1 finv.append((finv[-1] * (lf - i - 1)) % p) finv.append finv append (finv[-1] * (lf - i - 1)) % p finv[-1] * (lf - i - 1) finv[-1] finv -1 lf - i - 1 lf - i lf i 1 p na = 1 na 1 nb = 1 nb 1 for i in range(M):
		if a > i:
			na = (na * (n - i)) % p
		if b > i:
			nb = (nb * (n - i)) % p
	 i range(M) range M if a > i:
			na = (na * (n - i)) % p
		 a > i a i na = (na * (n - i)) % p na (na * (n - i)) % p na * (n - i) na n - i n i p if b > i:
			nb = (nb * (n - i)) % p
	 b > i b i nb = (nb * (n - i)) % p nb (nb * (n - i)) % p nb * (n - i) nb n - i n i p print((modpower(2, n, p) - 1 - (na * finv[lf - 1 - a]) % p - (nb * finv[lf - 1 - b]) % p) % p) print (modpower(2, n, p) - 1 - (na * finv[lf - 1 - a]) % p - (nb * finv[lf - 1 - b]) % p) % p modpower(2, n, p) - 1 - (na * finv[lf - 1 - a]) % p - (nb * finv[lf - 1 - b]) % p modpower(2, n, p) - 1 - (na * finv[lf - 1 - a]) % p modpower(2, n, p) - 1 modpower(2, n, p) modpower 2 n p 1 (na * finv[lf - 1 - a]) % p na * finv[lf - 1 - a] na finv[lf - 1 - a] finv lf - 1 - a lf - 1 lf 1 a p (nb * finv[lf - 1 - b]) % p nb * finv[lf - 1 - b] nb finv[lf - 1 - b] finv lf - 1 - b lf - 1 lf 1 b p p def modpower(a, p, d): # a^p % d
	pp = [a]
	for i in range(int(math.log2(p)) + 1):
		pp.append((pp[-1] ** 2) % d)
	b_p = format(p, 'b')
	m = 1
	for i in range(len(b_p)):
		if b_p[-i-1] == "1":
			m = (m * pp[i]) % d
	return m modpower pp = [a] pp [a] a for i in range(int(math.log2(p)) + 1):
		pp.append((pp[-1] ** 2) % d)
	 i range(int(math.log2(p)) + 1) range int(math.log2(p)) + 1 int(math.log2(p)) int math.log2(p) math.log2 math log2 p 1 pp.append((pp[-1] ** 2) % d) pp.append pp append (pp[-1] ** 2) % d pp[-1] ** 2 pp[-1] pp -1 2 d b_p = format(p, 'b') b_p format(p, 'b') format p 'b' m = 1 m 1 for i in range(len(b_p)):
		if b_p[-i-1] == "1":
			m = (m * pp[i]) % d
	 i range(len(b_p)) range len(b_p) len b_p if b_p[-i-1] == "1":
			m = (m * pp[i]) % d
	 b_p[-i-1] == "1" b_p[-i-1] b_p -i-1 -i i 1 "1" m = (m * pp[i]) % d m (m * pp[i]) % d m * pp[i] m pp[i] pp i d return m m a a p p d d main() main def main():
	n, a, b = [int(x) for x in input().split(" ")]
	# 2^n - 1 - nCa - nCb
	p = 1000000007
	a = min([a, n - a])
	b = min([b, n - b])
	M = max([a, b])
	f = [1, 1]
	finv = []
	for i in range(M):
		f.append((f[-1] * (i + 2)) % p)
	lf = len(f)
	finv.append(modpower(f[-1], p - 2, p))
	for i in range(lf - 1):
		finv.append((finv[-1] * (lf - i - 1)) % p)
	na = 1
	nb = 1
	for i in range(M):
		if a > i:
			na = (na * (n - i)) % p
		if b > i:
			nb = (nb * (n - i)) % p
	print((modpower(2, n, p) - 1 - (na * finv[lf - 1 - a]) % p - (nb * finv[lf - 1 - b]) % p) % p) def main():
	n, a, b = [int(x) for x in input().split(" ")]
	# 2^n - 1 - nCa - nCb
	p = 1000000007
	a = min([a, n - a])
	b = min([b, n - b])
	M = max([a, b])
	f = [1, 1]
	finv = []
	for i in range(M):
		f.append((f[-1] * (i + 2)) % p)
	lf = len(f)
	finv.append(modpower(f[-1], p - 2, p))
	for i in range(lf - 1):
		finv.append((finv[-1] * (lf - i - 1)) % p)
	na = 1
	nb = 1
	for i in range(M):
		if a > i:
			na = (na * (n - i)) % p
		if b > i:
			nb = (nb * (n - i)) % p
	print((modpower(2, n, p) - 1 - (na * finv[lf - 1 - a]) % p - (nb * finv[lf - 1 - b]) % p) % p) main def modpower(a, p, d): # a^p % d
	pp = [a]
	for i in range(int(math.log2(p)) + 1):
		pp.append((pp[-1] ** 2) % d)
	b_p = format(p, 'b')
	m = 1
	for i in range(len(b_p)):
		if b_p[-i-1] == "1":
			m = (m * pp[i]) % d
	return m def modpower(a, p, d): # a^p % d
	pp = [a]
	for i in range(int(math.log2(p)) + 1):
		pp.append((pp[-1] ** 2) % d)
	b_p = format(p, 'b')
	m = 1
	for i in range(len(b_p)):
		if b_p[-i-1] == "1":
			m = (m * pp[i]) % d
	return m modpower
import math

def main():
	n, a, b = [int(x) for x in input().split(" ")]
	# 2^n - 1 - nCa - nCb
	p = 1000000007
	a = min([a, n - a])
	b = min([b, n - b])
	M = max([a, b])
	f = [1, 1]
	finv = []
	for i in range(M):
		f.append((f[-1] * (i + 2)) % p)
	lf = len(f)
	finv.append(modpower(f[-1], p - 2, p))
	for i in range(lf - 1):
		finv.append((finv[-1] * (lf - i - 1)) % p)
	na = 1
	nb = 1
	for i in range(M):
		if a > i:
			na = (na * (n - i)) % p
		if b > i:
			nb = (nb * (n - i)) % p
	print((modpower(2, n, p) - 1 - (na * finv[lf - 1 - a]) % p - (nb * finv[lf - 1 - b]) % p) % p)


def modpower(a, p, d): # a^p % d
	pp = [a]
	for i in range(int(math.log2(p)) + 1):
		pp.append((pp[-1] ** 2) % d)
	b_p = format(p, 'b')
	m = 1
	for i in range(len(b_p)):
		if b_p[-i-1] == "1":
			m = (m * pp[i]) % d
	return m

main()