#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const ll MOD = 998244353; ll mod_pow(ll x, ll n, ll mod = MOD) { ll res = 1; while (n > 0) { if (n & 1) { res = res * x % mod; } x = x * x % mod; n >>= 1; } return res; } ll mod_inverse(ll x, ll mod = MOD) { return mod_pow(x, mod - 2, mod); } ll dp[2010][2010]; int main() { int N, K; cin >> N >> K; memset(dp, 0, sizeof(dp)); dp[0][0] = 1; for (int i = 1; i <= K; ++i) { int remain = K - i + 1; ll sum = 0; for (int j = i; j <= N; ++j) { ll r = N - j + 1; if (j == N) { sum += dp[i - 1][j]; } if (j - remain >= N) { sum += dp[i - 1][j - 1]; } else { sum += dp[i - 1][j - 1] * mod_inverse(r); } sum %= MOD; dp[i][j] = sum; } } cout << dp[K][N] << endl; return 0; }