#include<cstdio>
#include<cstring>
#include<algorithm>
#define rep(i,a,b) for(i=a;i<=b;i++)
using namespace std;
const int N=500010,maxn=500000;
const int mod=998244353;
int inv[N],cj[N];int ans;

int power(int x,int y){
	int ret=1;
	for(;y;y>>=1,x=1ll*x*x%mod){
		if(y&1)	ret=1ll*ret*x%mod;
	}
	return ret;
}

void init(){
	int i;
	cj[0]=1;rep(i,1,maxn)	cj[i]=1ll*cj[i-1]*i%mod;
	inv[maxn]=power(cj[maxn],mod-2);inv[0]=1;
	for(i=maxn-1;i;i--)	inv[i]=1ll*inv[i+1]*(i+1)%mod;
}

int C(int n,int m){
	//printf("%d %d\n",n,m);
	if(m<0||n<m)	return 0;
	return 1ll*cj[n]*inv[m]%mod*inv[n-m]%mod;
}

int main(){
	//freopen("a.in","r",stdin);
	//freopen("a.out","w",stdout);
	int i,n,m;
	init();
	scanf("%d%d",&n,&m);
	rep(i,0,min(m/2,m-n)){
		if(2*i==m)	ans=(1ll*ans+C(m-1,i-1)-C(m-1,i-1-(m-i-n+1)))%mod;
		else ans=(1ll*ans+C(m,i)-C(m,i-(m-i-n+1)))%mod;
		//if(2*i==m)	ans=(1ll*ans-(C(m-1,i-(m-i-n))-C(m-1,i-(m-i-n+1))))%mod;
		//printf("%d\n",ans);
	}
	ans=(ans%mod+mod)%mod;
	printf("%d",ans);
}
	