using
System;
class
Program {
static
readonly
long
mod = 1000000007;
static
long
Power(
long
x,
long
y,
long
p) {
long
res = 1;
x %= p;
while
(y > 0) {
if
((y & 1) == 1) {
res = (res * x) % p;
}
y >>= 1;
x = (x * x) % p;
}
return
res;
}
static
(
long
[],
long
[]) PreCalculate(
int
n) {
long
[] fact =
new
long
[n + 1];
long
[] inverseMod =
new
long
[n + 1];
fact[0] = inverseMod[0] = 1;
for
(
int
i = 1; i <= n; i++) {
fact[i] = (fact[i - 1] * i) % mod;
inverseMod[i] = Power(fact[i], mod - 2, mod);
}
return
(fact, inverseMod);
}
static
long
nPr(
int
a,
int
b,
long
[] fact,
long
[] inverseMod) {
return
(fact[a] * inverseMod[a - b]) % mod;
}
static
int
CountWays(
int
n,
int
m) {
(
long
[] fact,
long
[] inverseMod) = PreCalculate(m);
long
ans = 0;
for
(
int
i = 1; i <= n; i++) {
ans += (((nPr(n, i, fact, inverseMod)
* nPr(m, i, fact, inverseMod)) % mod)
* inverseMod[i]) % mod;
if
(ans >= mod) {
ans %= mod;
}
}
return
(
int
)ans;
}
static
void
Main(
string
[] args) {
int
n = 2;
int
m = 2;
Console.WriteLine(CountWays(n, m));
}
}