// import kotlin.comparisons.*
// import kotlin.math.*
import java.util.*

const val mod = 1000000007L

fun readI() = readLine()!!.toInt()
fun readL() = readLine()!!.toLong()
fun readD() = readLine()!!.toDouble()
fun readIs() = readLine()!!.split(' ').map(String::toInt)
fun readLs() = readLine()!!.split(' ').map(String::toLong)
fun readDs() = readLine()!!.split(' ').map(String::toDouble)

fun repeatpow(base: Long, exp: Long): Long {
  if (exp == 0L) return 1
  if (exp % 2 == 0L) {
    val w = repeatpow(base, exp / 2)
    return w * w % mod
  } else {
    val w = repeatpow(base, exp - 1)
    return base * w % mod
  }
}

fun main(args: Array<String>) {
  val (n, a, b) = readLs()
  var fa = 1L
  for (i in 1..a) {
    fa = fa * i % mod
  }
  var fb = 1L
  for (i in a + 1..b) {
    fb = fb * i % mod
  }
  fb = fa * fb % mod
  var w1 = 1L
  val w2 = LongArray(b.toInt()) { w1 = w1 * (n - it) % mod; w1 }
  val na = w2[a.toInt() - 1]
  val nb = w2[b.toInt() - 1]

  val ans = repeatpow(2, n.toLong()) -
    (na * repeatpow(fa, mod - 2) + nb * repeatpow(fb, mod - 2)) % mod -
    1
    println(if (ans < 0) ans + mod else ans)
}
