template
**** Combinatorics **** const ll M = 1e9+7; // default modulus // --- Basic modular operations --- ll mod(ll x, ll m = M){ return ((x % m) + m) % m; } ll mod_add(ll a, ll b, ll m = M){ return (a + b) % m; } ll mod_sub(ll a, ll b, ll m = M){ return ((a - b) % m + m) % m; } ll mod_mul(ll a, ll b, ll m = M){ return ((a % m) * (b % m)) % m; // safe for small numbers } ll mod_pow(ll a, ll b, ll m = M) { ll res = 1; a %= m; while(b) { if(b & 1) res = (res * a) % m; a = (a * a) % m; b >>= 1; } return res; } // --- Modular inverse for prime modulus --- // Fermat's Little Theorem: a^(m-2) ≡ a^(-1) (mod m) ll mod_inv_prime(ll a, ll m = M){ return mod_pow(a, m - 2, m); } // --- Modular inverse for non-prime modulus --- /...