大组合数模板
long long GetInverse(long long a, long long mod)
{
long long ans = 1, n = mod - 2;
a %= mod;
while (n) {
if (n & 1) {
ans = ans * a % mod;
}
n >>= 1;
a = a * a % mod;
}
return ans % mod;
}
long long C(long long n, long long m, long long mod)
{
if (m > n) return 0;
long long ans = 1;
for (int i = 1; i <= m; i++) {
long long a = (n + i - m) % mod;
long long b = i % mod;
ans = ans * (a * GetInverse(b, mod) % mod) % mod;
}
return ans % mod;
}