#include #include const int MOD = 998244353; using namespace std; // ???? ????? ?????? ???????? vector factorial(int n) { vector fact(n + 1, 1); for (int i = 2; i <= n; ++i) { fact[i] = (fact[i - 1] * i) % MOD; } return fact; } // ???? ????? ??????? ???????? ???? ????? long long modInverse(long long a, long long p) { long long result = 1; long long exponent = p - 2; // p ?? ??? ???? while (exponent) { if (exponent % 2 == 1) { result = (result * a) % p; } a = (a * a) % p; exponent /= 2; } return result; } // ???? ????? ??? ????? ?????? ???? long long countTrees(int N, int P) { if (P > N) return 0; // ??? ??? ??? ?????????? ??????? ???? ?? ?????? long long totalWays = 0; auto fact = factorial(N); // ???? ??? ????? for (int k = P; k <= N; ++k) { long long ways = (fact[N - k] * modInverse(fact[k], MOD)) % MOD; ways = (ways * modInverse(fact[N - k - P], MOD)) % MOD; totalWays = (totalWays + ways) % MOD; } return totalWays; } int main() { int N, P; cin >> N >> P; cout << countTrees(N, P) << endl; return 0; }