#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define REP(i,n) for(int i=0;i<(n);i++)
#define qwq(x) cout<<"# "<<#x<<" = "<<x<<endl;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
using namespace std;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef long long ll;
 
template<class T> inline void read(T &x){
	int f=0;x=0;char ch=getchar();
	for(;!isdigit(ch);ch=getchar())f|=(ch=='-');
	for(;isdigit(ch);ch=getchar())x=x*10+ch-'0';
	if(f)x=-x;
}

const int N=1000005,mod=998244353;
int fac[N],rev[N],n,K,ans;

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

int C(int n,int m){
	return m<0||m>n?0:(ll)fac[n]*rev[m]%mod*rev[n-m]%mod;
}

int fix(int x){
	return x>=mod?x-mod:x;
}

void init(int lim){
	fac[0]=1;
	rep(i,1,lim)fac[i]=(ll)fac[i-1]*i%mod;
	rev[lim]=power(fac[lim],mod-2);
	per(i,lim,1)rev[i-1]=(ll)rev[i]*i%mod;
}

int main(){
	read(n),read(K);
	init(1000000);
	for(int red=max(n,(K+1)/2);red<=K;red++){
		int blue=K-red,f=blue==red;
		ans=fix(ans+fix(C(K-f,red)+mod-C(K-f,red*2-(n-1))));
	}
	cout<<ans<<endl;
	return 0;
}