#include<bits/stdc++.h>
using namespace std;
#define REP(i,a,b) for(int i=(a),_ed=(b);i<=_ed;++i)
#define DREP(i,a,b) for(int i=(a),_ed=(b);i>=_ed;--i)
#define mp(x,y) make_pair((x),(y))
#define sz(x) (int)(x).size()
#define pb push_back
typedef long long ll;
typedef pair<int,int> pii;
inline int read(){
    register int x=0,f=1;register char ch=getchar();
    while(!isdigit(ch)){if(ch=='-')f=0;ch=getchar();}
    while(isdigit(ch)){x=x*10+(ch^'0');ch=getchar();}
    return f?x:-x;
}

const int mod=998244353;
int n,k,fac[500005],ifc[500005];
inline int power(int b,int n){int ans=1;for(;n;n>>=1,b=1ll*b*b%mod)if(n&1)ans=1ll*ans*b%mod;return ans;}
inline int C(int n,int m){return (n<0||m<0||n<m)?0:1ll*fac[n]*ifc[m]%mod*ifc[n-m]%mod;}
inline void inc(int& x,int y){x=x+y<mod?x+y:x+y-mod;}

int main(){
	// freopen("in.in","r",stdin);
	int ___=500001;
	REP(i,fac[0]=1,___)fac[i]=1ll*fac[i-1]*i%mod;
	ifc[___]=power(fac[___],mod-2);
	DREP(i,___,1)ifc[i-1]=1ll*ifc[i]*i%mod;
	n=read(),k=read();
	int ans=0;
	REP(r,1,k){
		int b=k-r;
		if(r<b)continue;
		if(r==b)--b;//////////////////特判特判特判
		////r=b时,无可以接受多余'rb'对的变色龙.但是因为最后一个球肯定是b,直接删去,之后就产生一个可以接受的变色龙
		if(r>=n+b)inc(ans,C(r+b,r));
		else inc(ans,r>=n?(C(r+b,r)-C(r+b,r+(r-n)+1)+mod)%mod:0);
	}
	printf("%d\n",ans);
	return 0;
}
