#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#define ll long long
using namespace std;
template <class T>
inline void rd(T &x) {
	x=0; char c=getchar(); int f=1;
	while(!isdigit(c)) { if(c=='-') f=-1; c=getchar(); }
	while(isdigit(c)) x=x*10-'0'+c,c=getchar(); x*=f;
}
const int N=5e5+10,mod=998244353;
int Pow(int x,int y) {                                                                                                                                                   
	int res=1;
	while(y) {
		if(y&1) res=res*(ll)x%mod;
		x=x*(ll)x%mod,y>>=1;
	}
	return res;
}
int fac[N],inv[N];
void getfac(int n) {
	fac[0]=1; for(int i=1;i<=n;++i) fac[i]=fac[i-1]*(ll)i%mod;
	inv[n]=Pow(fac[n],mod-2); for(int i=n;i>=1;--i) inv[i-1]=inv[i]*(ll)i%mod;
}
int C(int n,int m) { if(m>n) return 0;return fac[n]*(ll)inv[m]%mod*inv[n-m]%mod; }
int n,m;
int main() {
	rd(n),rd(m); getfac(m);
	if(m<n) {
		printf("0");
		return 0;
	}
	int ans=0;
	for(int R=0;R<=m;++R) {
		int B=m-R; if(R==B) B--;
		int tot=R+B;
		int L=R-B;
		if(L<0) continue;
		int T=B-(n-L);
		if(T<0) continue;
		ans=(ans+C(tot,R))%mod;
		if(L<n) ans=(ans-C(tot,R+T+1))%mod;
	}	
	printf("%d",(ans+mod)%mod);
	return 0;
}