Problem:
Score : 400 points

Problem Statement

Akari has n kinds of flowers, one of each kind.

She is going to choose one or more of these flowers to make a bouquet.

However, she hates two numbers a and b, so the number of flowers in the bouquet cannot be a or b.

How many different bouquets are there that Akari can make?

Find the count modulo (10^9 + 7).

Here, two bouquets are considered different when there is a flower that is used in one of the bouquets but not in the other bouquet.

Constraints

All values in input are integers.

2 \leq n \leq 10^9

1 \leq a < b \leq \textrm{min}(n, 2 \times 10^5)

Input

Input is given from Standard Input in the following format:

n a b

Output

Print the number of bouquets that Akari can make, modulo (10^9 + 7). (If there are no such bouquets, print 0.)

Sample Input 1

4 1 3

Sample Output 1

7

In this case, Akari can choose 2 or 4 flowers to make the bouquet.

There are 6 ways to choose 2 out of the 4 flowers, and 1 way to choose 4, so there are a total of 7 different bouquets that Akari can make.

Sample Input 2

1000000000 141421 173205

Sample Output 2

34076506

Print the count modulo (10^9 + 7).

Solution in Ruby (2.7.1) (judge verdict: Wrong Answer)

#!/usr/bin/env ruby
n, a, b = gets.chomp.split.map(&:to_i)
p = 10 ** 9 + 7

# 繰り返し二乗法
def recursive_pow_with_mod(a, n, mod)
 return 1 if n == 0
 return a % mod if n == 1
 return (a * recursive_pow_with_mod(a, n - 1, mod) ) % mod if n % 2 == 1
 recursive_pow_with_mod(a, n / 2, mod) ** 2 % mod
end

# 逆元
def modinv(a, mod)
 b = mod; u = 1; v = 0
 while b > 0
  t = a / b
  a -= t * b
  tmp = a; a = b; b = tmp
  u -= t * v
  tmp = u; u = v; v = tmp
 end
 u %= mod
 u < 0 ? u + mod.abs : u
end

# 組み合わせ
def cmb(n, a, mod)
 numerator = 1
 denominator = 1
 a.times do |i|
  numerator *= n - i
  numerator %= mod
  denominator *= a - i
  denominator %= mod
 end
 numerator * modinv(denominator, mod) % mod
end

ans = recursive_pow_with_mod(2, n, p) - 1 - cmb(n,a,p) - cmb(n,b,p)
ans += p if ans < p
puts ans