ll C(ll m, ll n) { if(m < 0 n < 0 n > m) return0; ll ans = f[m]; ans = ans * invF[n] % mod; ans = ans * invF[m - n] % mod; return ans; }
//ll quick_pow(ll a, ll b) { // ll ans = 1; // while(b) { // if(b & 1) ans = ans * a % mod; // a = a * a % mod; // b >>= 1; // } // return ans % mod; //}
voidsolve(){ Init(); ll n, m; cin >> n >> m; ll ans = 0; // C(n + m - 1, m) n个数中选m个不递减个数 for(ll i = 1;i <= n; i++) { // cout << "个数:" << C(n - i + 1 + m - 1 - 1, m - 1) << endl; ans = (ans + (n - 2 * i + 1) * C(n - i + m - 1, m - 1) % mod) % mod; } cout << (ans % mod + mod) % mod << endl; }