#include <bits/stdc++.h>
#define P 998244353
#define MAX_N 1000000
using namespace std;
typedef long long lnt;
template <class T> inline void read(T &x) {
	x = 0; int c = getchar(), f = 1;
	for (; !isdigit(c); c = getchar()) if (c == 45) f = -1;
	for (; isdigit(c); c = getchar()) (x *= 10) += f*(c-'0');
}
lnt fac[MAX_N+5], inv[MAX_N+5], ans;
void init(int n) {
	fac[0] = inv[0] = inv[1] = 1;
	for (int i = 1; i <= n; i++) fac[i] = fac[i-1]*i%P;
	for (int i = 2; i <= n; i++) inv[i] = (P-P/i*inv[P%i]%P)%P;
	for (int i = 2; i <= n; i++) inv[i] = inv[i-1]*inv[i]%P;
}
lnt C(int n, int m) {return n >= m ? fac[n]*inv[m]%P*inv[n-m]%P : 0;}
lnt calc(int X, int Y, int T) {
	if (Y-X >= T || T <= 0) return 0;
	return (C(X+Y, X)-C(X+Y, X+T)+P)%P;
}
int main() {
	int n, m; read(n), read(m), init(m<<1);
	for (int R = m, B = 0; R >= B; R--, B++)
		if (R ^ B) ans = (ans+calc(R, B, R-n+1))%P;
		else ans = (ans+calc(R, B-1, B-n+1))%P;
	return printf("%lld\n", ans), 0;
}