#include<bits/stdc++.h>
#define ll long long
#define ull unsigned ll
#define uint unsigned
#define pii pair<int,int>
#define pll pair<ll,ll>
#define PB push_back
#define fi first
#define se second
#define For(i,j,k) for (int i=(int)(j);i<=(int)(k);i++)
#define Rep(i,j,k) for (int i=(int)(j);i>=(int)(k);i--)
#define CLR(a,v) memset(a,v,sizeof(a));
#define CPY(a,b) memcpy(a,b,sizeof(a));
using namespace std;
const int N=1000005;
const int mo=998244353;
int fac[N],inv[N],n,k,ans;
void init(){
	inv[0]=inv[1]=fac[0]=1;
	For(i,2,N-1) inv[i]=1ll*inv[mo%i]*(mo-mo/i)%mo;
	For(i,1,N-1) inv[i]=1ll*inv[i-1]*inv[i]%mo;
	For(i,1,N-1) fac[i]=1ll*fac[i-1]*i%mo;
}
int C(int x,int y){
	if (x<0||y<0||y>x) return 0;
	return 1ll*fac[x]*inv[y]%mo*inv[x-y]%mo;
}
int walk(int x,int y,int D){
	if (D<=0) return 0;
	return (C(x+y,x)+mo-C(x+y,y-D))%mo;
}
int main(){
	init();
	scanf("%d%d",&n,&k);
	if (k%2==0) ans=(ans+walk(k/2,k/2-1,k/2-n+1))%mo;
	For(R,k/2+1,k) ans=(ans+walk(R,k-R,R-n+1))%mo;
	printf("%d\n",ans);
}