import java.math.BigInteger;
public class Main
{
public static void main
(String[] args
) {
int m = 100;
int n = 100;
for(int i = 0; i <= m; ++i)
{
for(int j = 0; j <= n; ++j)
{
}
}
for(int i = 1; i <= m; ++i)
{
for(int j = 1; j <= n; ++j)
{
dp[i][j] = dp[i-1][j].add(dp[i][j-1]);
}
}
for(int i = 0; i <= m; ++i)
{
for(int j = 0; j <= n; ++j)
{
}
}
System.
out.
println(dfs
(dp, m, n
)); }
{
if(x
== 0 || y
== 0 || !dp
[x
][y
].
equals(BigInteger.
ZERO)) return dp[x][y];
return dp[x][y] = dfs(dp, x-1, y).add(dfs(dp, x, y-1));
}
}
aW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOwpwdWJsaWMgY2xhc3MgTWFpbgp7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQogICAgewogICAgICAgIGludCBtID0gMTAwOwogICAgICAgIGludCBuID0gMTAwOwogICAgICAgIEJpZ0ludGVnZXIgZHBbXVtdID0gbmV3IEJpZ0ludGVnZXJbbSsxXVtuKzFdOwogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPD0gbTsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBqID0gMDsgaiA8PSBuOyArK2opCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRwW2ldW2pdID0gQmlnSW50ZWdlci5aRVJPOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGRwWzFdWzFdID0gQmlnSW50ZWdlci5PTkU7CiAgICAgICAgCiAgICAgICAgZm9yKGludCBpID0gMTsgaSA8PSBtOyArK2kpCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGogPSAxOyBqIDw9IG47ICsraikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoZHBbaV1bal0uZXF1YWxzKEJpZ0ludGVnZXIuWkVSTykpCiAgICAgICAgICAgICAgICAgICAgZHBbaV1bal0gPSBkcFtpLTFdW2pdLmFkZChkcFtpXVtqLTFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZHBbbV1bbl0pOwogICAgICAgIAogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPD0gbTsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBqID0gMDsgaiA8PSBuOyArK2opCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRwW2ldW2pdID0gQmlnSW50ZWdlci5aRVJPOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGRwWzFdWzFdID0gQmlnSW50ZWdlci5PTkU7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGRmcyhkcCwgbSwgbikpOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIEJpZ0ludGVnZXIgZGZzKEJpZ0ludGVnZXIgZHBbXVtdLCBpbnQgeCwgaW50IHkpCiAgICB7CiAgICAgICAgaWYoeCA9PSAwIHx8IHkgPT0gMCB8fCAhZHBbeF1beV0uZXF1YWxzKEJpZ0ludGVnZXIuWkVSTykpCiAgICAgICAgICAgIHJldHVybiBkcFt4XVt5XTsKICAgICAgICByZXR1cm4gZHBbeF1beV0gPSBkZnMoZHAsIHgtMSwgeSkuYWRkKGRmcyhkcCwgeCwgeS0xKSk7CiAgICB9Cn0=