#include<bits/stdc++.h>
#define LL long long
#define db double

using namespace std;
const int N=5e5+10,mod=998244353;
int rd()
{
    int x=0,w=1;char ch=0;
    while(ch<'0'||ch>'9'){if(ch=='-') w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+(ch^48);ch=getchar();}
    return x*w;
}
void ad(int &x,int y){x+=y,x-=x>=mod?mod:0;}
int fpow(int a,int b){int an=1;while(b){if(b&1) an=1ll*an*a%mod;a=1ll*a*a%mod,b>>=1;}return an;}
int ginv(int a){return fpow(a,mod-2);}
int n,k,fac[N],iac[N];
int C(int a,int b){return b<0||a<b?0:1ll*fac[a]*iac[b]%mod*iac[a-b]%mod;}

int main()
{
/////bslysmznyxxl,qdl
	fac[0]=1;
	for(int i=1;i<=N-5;++i) fac[i]=1ll*fac[i-1]*i%mod;
	iac[N-5]=ginv(fac[N-5]);
	for(int i=N-5;i;--i) iac[i-1]=1ll*iac[i]*i%mod;
	n=rd(),k=rd();
	if(n>k){puts("0");return 0;}
	int ans=0;
	for(int i=n,j=k-n;i<=k;++i,--j)
	{
		if(i>j)
		{
			ad(ans,C(k,j));
			if(i-j<=n) ad(ans,mod-C(k,j-(i-n+1)));
		}
		else if(i==j)
			ad(ans,C(k-1,j-1)),ad(ans,mod-C(k-1,j-1-(i-n+1)));
	}
	printf("%d\n",ans);
	return 0;
}
