#include #include #define rep(i, a, b) for (ll i = (ll)(a); i < (ll)(b); i++) using namespace atcoder; using namespace std; typedef long long ll; using mint = atcoder::modint998244353; struct BigFact { long long mod; using mint = modint; BigFact(long long mod = 998244353) : mod(mod) { mint::set_mod(mod); } vector uku = { 1, 295201906, 160030060, 957629942, 545208507, 213689172, 760025067, 939830261, 506268060, 39806322, 808258749, 440133909, 686156489, 741797144, 390377694, 12629586, 544711799, 104121967, 495867250, 421290700, 117153405, 57084755, 202713771, 675932866, 79781699, 956276337, 652678397, 35212756, 655645460, 468129309, 761699708, 533047427, 287671032, 206068022, 50865043, 144980423, 111276893, 259415897, 444094191, 593907889, 573994984, 892454686, 566073550, 128761001, 888483202, 251718753, 548033568, 428105027, 742756734, 546182474, 62402409, 102052166, 826426395, 159186619, 926316039, 176055335, 51568171, 414163604, 604947226, 681666415, 511621808, 924112080, 265769800, 955559118, 763148293, 472709375, 19536133, 860830935, 290471030, 851685235, 242726978, 169855231, 612759169, 599797734, 961628039, 953297493, 62806842, 37844313, 909741023, 689361523, 887890124, 380694152, 669317759, 367270918, 806951470, 843736533, 377403437, 945260111, 786127243, 80918046, 875880304, 364983542, 623250998, 598764068, 804930040, 24257676, 214821357, 791011898, 954947696, 183092975}; long long solve(long long n) { if (n >= mod) return 0; int am = n % 10000000; int ka = n / 10000000 * 10000000; mint ret = uku[n / 10000000]; for (int i = ka + 1; i <= ka + am; i++) ret *= i; return ret.val(); } void uku_make(long long mod) { mint::set_mod(mod); mint now = 1; vector uki; rep(i, 1, mod) { if ((i - 1) % 10000000 == 0) uki.push_back(now.val()); now *= i; } cout << '{'; int m = uki.size(); for (int i = 0; i < m; i++) { if (i % 10 == 0) cout << endl; if (i != m - 1) cout << uki[i] << ','; else cout << uki[i] << "};" << endl; } } }; mint comb(ll n, ll k, int mod = 998244353) { if (k < 0 || k > n) return 0; BigFact bf; if (n - k < k) k = n - k; ll l = n - k, r = n; if (l / mod != r / mod) return 0; l %= mod; r %= mod; mint ret = bf.solve(r); ret /= bf.solve(l); ret /= bf.solve(k); return ret; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(12); ll n, k; cin >> n >> k; mint ans = comb(n, k); cout << ans.val() << endl; }