#include <bits/stdc++.h>
using namespace std;
const int MOD = 998244353;
long long modpow(long long a, long long b) {
long long res = 1;
while (b) {
if (b & 1) res = res * a % MOD;
a = a * a % MOD;
b >>= 1;
}
return res;
}
long long modinv(long long a) {
return modpow(a, MOD - 2);
}
long long nCr(long long m, int r) {
if (m < r || r < 0) return 0;
long long num = 1;
for (int i = 0; i < r; i++) {
num = num * ((m - i) % MOD) % MOD;
}
long long den = 1;
for (int i = 1; i <= r; i++) {
den = den * i % MOD;
}
return num * modinv(den) % MOD;
}
int main() {
long long n;
int k;
cin >> n >> k;
long long N = n - (long long)k * (k - 1) / 2;
if (N < k) {
cout << 0 << endl;
return 0;
}
long long ans = 0;
for (int j = 0; j <= k; j++) {
long long m = N - j * (k + 1) - 1;
long long term = nCr(m, k - 1);
if (j % 2 == 0) {
ans = (ans + nCr(k, j) * term) % MOD;
} else {
ans = (ans - nCr(k, j) * term % MOD + MOD) % MOD;
}
}
cout << ans << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTU9EID0gOTk4MjQ0MzUzOwoKbG9uZyBsb25nIG1vZHBvdyhsb25nIGxvbmcgYSwgbG9uZyBsb25nIGIpIHsKICAgIGxvbmcgbG9uZyByZXMgPSAxOwogICAgd2hpbGUgKGIpIHsKICAgICAgICBpZiAoYiAmIDEpIHJlcyA9IHJlcyAqIGEgJSBNT0Q7CiAgICAgICAgYSA9IGEgKiBhICUgTU9EOwogICAgICAgIGIgPj49IDE7CiAgICB9CiAgICByZXR1cm4gcmVzOwp9Cgpsb25nIGxvbmcgbW9kaW52KGxvbmcgbG9uZyBhKSB7CiAgICByZXR1cm4gbW9kcG93KGEsIE1PRCAtIDIpOwp9Cgpsb25nIGxvbmcgbkNyKGxvbmcgbG9uZyBtLCBpbnQgcikgewogICAgaWYgKG0gPCByIHx8IHIgPCAwKSByZXR1cm4gMDsKICAgIGxvbmcgbG9uZyBudW0gPSAxOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCByOyBpKyspIHsKICAgICAgICBudW0gPSBudW0gKiAoKG0gLSBpKSAlIE1PRCkgJSBNT0Q7CiAgICB9CiAgICBsb25nIGxvbmcgZGVuID0gMTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHI7IGkrKykgewogICAgICAgIGRlbiA9IGRlbiAqIGkgJSBNT0Q7CiAgICB9CiAgICByZXR1cm4gbnVtICogbW9kaW52KGRlbikgJSBNT0Q7Cn0KCmludCBtYWluKCkgewogICAgbG9uZyBsb25nIG47CiAgICBpbnQgazsKICAgIGNpbiA+PiBuID4+IGs7CgogICAgbG9uZyBsb25nIE4gPSBuIC0gKGxvbmcgbG9uZylrICogKGsgLSAxKSAvIDI7CiAgICBpZiAoTiA8IGspIHsKICAgICAgICBjb3V0IDw8IDAgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBsb25nIGxvbmcgYW5zID0gMDsKICAgIGZvciAoaW50IGogPSAwOyBqIDw9IGs7IGorKykgewogICAgICAgIGxvbmcgbG9uZyBtID0gTiAtIGogKiAoayArIDEpIC0gMTsKICAgICAgICBsb25nIGxvbmcgdGVybSA9IG5DcihtLCBrIC0gMSk7CiAgICAgICAgaWYgKGogJSAyID09IDApIHsKICAgICAgICAgICAgYW5zID0gKGFucyArIG5DcihrLCBqKSAqIHRlcm0pICUgTU9EOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGFucyA9IChhbnMgLSBuQ3IoaywgaikgKiB0ZXJtICUgTU9EICsgTU9EKSAlIE1PRDsKICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGFucyA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0=