program main
    implicit none
    integer(8):: n, a, b, ans=0
    integer(8):: i,j,k
    integer(8),parameter:: md=1000000007
    integer(8),allocatable:: f(:), inv_f(:)

    read*, n, a, b

    allocate(f(0:n), inv_f(0:n))
    f(:)=0; inv_f(:)=0
    f(0) = 1
    inv_f(0) = 1
    do i=1,n
        f(i) = mod(f(i-1)*i,md)
        if (i==a .or. i==b .or. i==n-a .or. i==n-b) then
            inv_f(i) = inverse(f(i), md)
        end if
    end do
    ans = 1
    block;integer(8):: p,ta
        p=n
        ta=2
        do while(p>0)
            if (mod(p,2) == 1) ans=mod(ans*ta,md)
            p=p/2
            ta=mod(ta*ta,md)
        end do
        end block

    if (ans-1 -comb(n,a)-comb(n,b) > 0) then
        print*, ans-1 -comb(n,a)-comb(n,b)
    else
        print*, mod(ans-1 -comb(n,a)-comb(n,b) + md, md)
    end if

contains
function comb(a,b) result(ret)
    integer(8):: a, b, ret
    ret = mod(mod(f(a)*inv_f(b),md)*inv_f(a-b),md)
end function



function inverse(x, md) result(inv)
    integer(8),value:: x
    integer(8):: md, inv
    integer(8):: p
    inv=1
    p = md-2

    do while(p > 0)
        if (mod(p,2) == 1) inv = mod(inv*x, md)
        p = rshift(p,1)
        x=mod(x*x,md)
    end do
    
end function


end program
