fun main(args: Array<String>) {
    val (n, a, b) = readLine()?.split(" ")?.map(String::toLong) ?: return
    val m = 1000000007L

    val nc = mPow(2, n, m) - 1
    val minus = (mCnr(n, a, m) + mCnr(n, b, m)) % m
    println((nc - minus + m) % m)
}

fun mCnr(n: Long, r: Long, m: Long): Long {
    val nc = (n - r + 1).until(n + 1).fold(1L) { a, b ->
        (a * (b)) % m
    }
    val rc = 0.until(r).fold(1L) { a, b ->
        (a * (r - b)) % m
    }
    return (nc * mPow(rc, m - 2, m)) % m
}

fun mPow(n: Long, ex: Long, m: Long): Long {
    var x = n
    var remain = ex
    var result = 1L
    while (remain > 0) {
        if (remain % 2L == 1L) {
            result = (result * x) % m
        }
        x = (x * x) % m
        remain /= 2
    }
    return result
}
