#include<iostream>
#include<cstdio>
#include<cstring>

namespace shit
{
	typedef long long ll;
	const int N=1010000,MOD=998244353;

	ll inv(int x){return x==1?1:(-(MOD/x)*inv(MOD%x)%MOD);}

	int fact[N],ifact[N];
	int f(int n,int m){return (ll)fact[n+m]*ifact[n]%MOD*ifact[m]%MOD;}

	int n,k;

	int calc(int R,int B) //assure that R>B
	{
		int K=std::max(B-R+n,0),T=R-K+1;
		if(K>R || K>B)return 0;

		return f(R,B)-(R>=T?f(R-T,B+T):0);
	}

	void initialize()
	{
		scanf("%d%d",&n,&k);
		fact[0]=1;
		for(int i=1;i<N;i++)fact[i]=(ll)fact[i-1]*i%MOD;
		ifact[N-1]=inv(fact[N-1]);
		for(int i=N-1;i;i--)ifact[i-1]=(ll)ifact[i]*i%MOD;
	}

	void solve()
	{
		initialize();
		int ans=0;
		for(int R=k;R*2>k;R--)
			ans=(ans+calc(R,k-R))%MOD;
		if(k%2==0)ans=(ans+calc(k/2,k/2-1))%MOD;
		ans=(ans+MOD)%MOD;
		printf("%d\n",ans);
	}

}

int main()
{
	shit::solve();
	return 0;
}
