import sys
input = sys.stdin.buffer.readline

#sys.setrecursionlimit(10**9)
#from functools import lru_cache

def RD(): return input().rstrip().decode()
def II(): return int(input())
def FI(): return int(input())
def MI(): return map(int,input().split())
def MF(): return map(float,input().split())
def LI(): return list(map(int,input().split()))
def LF(): return list(map(float,input().split()))
def TI(): return tuple(map(int,input().split()))
# rstrip().decode()


def main():
	m=10**9+7
	n,a,b=MI()
	f=[1]
	for i in range(b+5):
		t=f[-1]*(n-i)*pow(i+1,m-2,m)
		t%=m
		f.append(t)
	#print(f)

	ans=pow(2,n,m)-1-f[a]-f[b]
	ans%=m
	print(ans)




























if __name__ == "__main__":
	main() import sys sys input = sys.stdin.buffer.readline input sys.stdin.buffer.readline sys.stdin.buffer sys.stdin sys stdin buffer readline def RD(): return input().rstrip().decode() RD def II(): return int(input()) II def FI(): return int(input()) FI def MI(): return map(int,input().split()) MI def MF(): return map(float,input().split()) MF def LI(): return list(map(int,input().split())) LI def LF(): return list(map(float,input().split())) LF def TI(): return tuple(map(int,input().split()))
# rstrip().decode() TI def main():
	m=10**9+7
	n,a,b=MI()
	f=[1]
	for i in range(b+5):
		t=f[-1]*(n-i)*pow(i+1,m-2,m)
		t%=m
		f.append(t)
	#print(f)

	ans=pow(2,n,m)-1-f[a]-f[b]
	ans%=m
	print(ans) main m=10**9+7 m 10**9+7 10**9 10 9 7 n,a,b=MI() n MI() MI a b f=[1] f [1] 1 for i in range(b+5):
		t=f[-1]*(n-i)*pow(i+1,m-2,m)
		t%=m
		f.append(t)
	#print(f)

	 i range(b+5) range b+5 b 5 t=f[-1]*(n-i)*pow(i+1,m-2,m) t f[-1]*(n-i)*pow(i+1,m-2,m) f[-1]*(n-i) f[-1] f -1 n-i n i pow(i+1,m-2,m) pow i+1 i 1 m-2 m 2 m t%=m t m f.append(t) f.append f append t ans=pow(2,n,m)-1-f[a]-f[b] ans pow(2,n,m)-1-f[a]-f[b] pow(2,n,m)-1-f[a] pow(2,n,m)-1 pow(2,n,m) pow 2 n m 1 f[a] f a f[b] f b ans%=m ans m print(ans) print ans if __name__ == "__main__":
	main() __name__ == "__main__" __name__ "__main__" main() main def II(): return int(input()) def II(): return int(input()) II def LF(): return list(map(float,input().split())) def LF(): return list(map(float,input().split())) LF def MI(): return map(int,input().split()) def MI(): return map(int,input().split()) MI def main():
	m=10**9+7
	n,a,b=MI()
	f=[1]
	for i in range(b+5):
		t=f[-1]*(n-i)*pow(i+1,m-2,m)
		t%=m
		f.append(t)
	#print(f)

	ans=pow(2,n,m)-1-f[a]-f[b]
	ans%=m
	print(ans) def main():
	m=10**9+7
	n,a,b=MI()
	f=[1]
	for i in range(b+5):
		t=f[-1]*(n-i)*pow(i+1,m-2,m)
		t%=m
		f.append(t)
	#print(f)

	ans=pow(2,n,m)-1-f[a]-f[b]
	ans%=m
	print(ans) main def LI(): return list(map(int,input().split())) def LI(): return list(map(int,input().split())) LI def RD(): return input().rstrip().decode() def RD(): return input().rstrip().decode() RD def TI(): return tuple(map(int,input().split()))
# rstrip().decode() def TI(): return tuple(map(int,input().split()))
# rstrip().decode() TI input = sys.stdin.buffer.readline sys.stdin.buffer.readline input def FI(): return int(input()) def FI(): return int(input()) FI def MF(): return map(float,input().split()) def MF(): return map(float,input().split()) MF
import sys
input = sys.stdin.buffer.readline

#sys.setrecursionlimit(10**9)
#from functools import lru_cache

def RD(): return input().rstrip().decode()
def II(): return int(input())
def FI(): return int(input())
def MI(): return map(int,input().split())
def MF(): return map(float,input().split())
def LI(): return list(map(int,input().split()))
def LF(): return list(map(float,input().split()))
def TI(): return tuple(map(int,input().split()))
# rstrip().decode()


def main():
	m=10**9+7
	n,a,b=MI()
	f=[1]
	for i in range(b+5):
		t=f[-1]*(n-i)*pow(i+1,m-2,m)
		t%=m
		f.append(t)
	#print(f)

	ans=pow(2,n,m)-1-f[a]-f[b]
	ans%=m
	print(ans)




























if __name__ == "__main__":
	main()
