import
java.util.Arrays;
public
class
LiftGroups {
static
final
int
SIZE =
100100
;
static
long
[] factorial =
new
long
[SIZE];
static
long
[] inverseFactorial =
new
long
[SIZE];
static
long
mod = (
long
)1e9 +
7
;
static
long
power(
long
base,
long
exponent)
{
long
result =
1
;
while
(exponent >
0
) {
if
(exponent %
2
==
1
)
result = (result * base) % mod;
base = (base * base) % mod;
exponent /=
2
;
}
return
result;
}
static
void
preCalculate()
{
Arrays.fill(factorial,
0
);
Arrays.fill(inverseFactorial,
0
);
factorial[
0
] =
1
;
for
(
int
i =
1
; i <
100001
; ++i)
factorial[i] = (i * factorial[i -
1
]) % mod;
inverseFactorial[
100000
]
= power(factorial[
100000
], mod -
2
);
for
(
int
i =
99999
; i >=
0
; i--)
inverseFactorial[i]
= ((i +
1
) * inverseFactorial[i +
1
]) % mod;
}
static
int
noOfWays(
int
z,
int
n,
int
m)
{
preCalculate();
long
ans = (factorial[z + m -
2
]
* inverseFactorial[z -
2
])
% mod;
return
(
int
)ans;
}
public
static
void
main(String[] args)
{
int
z =
3
, n =
10
, m =
2
;
int
ans = noOfWays(z, n, m);
System.out.println(ans);
}
}