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 Scala (2.11.7) (judge verdict: Runtime Error)

object Main extends App {
  val nabInput =  scala.io.StdIn.readLine()
  val nabArray = nabInput.split(" ").map(_.toInt).toVector

  val max = 1000000007L

  val n = nabArray(0)
  val a = nabArray(1)
  val b = nabArray(2)

  val combArray = {
    val arr = Array.ofDim[Long](n + 1, n + 1)
    val loopMax = arr.length - 1
    (0 to loopMax).foreach { i =>
      arr(i)(0) = 1L;
      arr(i)(i) = 1L;
    }
    (1 to loopMax).foreach { j =>
      (1 to j - 1).foreach { k =>
        arr(j)(k) = (arr(j - 1)(k - 1) + arr(j - 1)(k)) % 1000000007L
      }

    }
    arr
  }

  var result = 0L

  (1 to n).foreach { i =>
    if(i != a && i != b) {
      result = (result + combArray(n)(i)) % 1000000007L
    }
  }
  println(result)
}