import
java.util.*;
class
GFG{
static
final
int
mod =(
int
)(1e9 +
7
);
static
int
power(
int
a,
int
m1)
{
if
(m1 ==
0
)
return
1
;
else
if
(m1 ==
1
)
return
a;
else
if
(m1 ==
2
)
return
(
int
) ((1L * a * a) % mod);
else
if
(m1 %
2
==
1
)
return
(
int
) ((1L * a * power(power(a, m1 /
2
),
2
)) % mod);
else
return
power(power(a, m1 /
2
),
2
) % mod;
}
static
int
factorial(
int
x)
{
int
ans =
1
;
for
(
int
i =
1
; i <= x; i++)
ans = (
int
) ((1L * ans * i) % mod);
return
ans;
}
static
int
inverse(
int
x)
{
return
power(x, mod -
2
);
}
static
int
binomial(
int
n,
int
r)
{
if
(r > n)
return
0
;
int
ans = factorial(n);
ans = (
int
) ((1L * ans * inverse(factorial(r))) % mod);
ans = (
int
) ((1L * ans * inverse(factorial(n - r))) % mod);
return
ans;
}
static
int
number_of_sets(
int
n,
int
a,
int
b)
{
int
ans = power(
2
, n);
ans = ans - binomial(n, a);
if
(ans <
0
)
ans += mod;
ans = ans - binomial(n, b);
ans--;
if
(ans <
0
)
ans += mod;
return
ans;
}
public
static
void
main(String[] args)
{
int
N =
4
, A =
1
, B =
3
;
System.out.print(number_of_sets(N, A, B));
}
}