#include <bits/stdc++.h>
#define pb push_back
#define cmin(a,b) (a>b?a=b:a)
#define cmax(a,b) (a<b?a=b:a)
#define lop(i,s,t) for(int i=s;i<(t);++i)
#define rep(i,s,t) for(int i=s;i<=(t);++i)
#define dec(i,s,t) for(int i=s;i>=(t);--i)
#define fore(i,v) for(int i=g[v],d=es[i].d;i;i=es[i].nxt,d=es[i].d)
using namespace std;

#define Pr(f,...) printf(f,##__VA_ARGS__),fflush(stdout)

typedef long long ll;

const int N=5e5+50,P=998244353;

int mul(int a,int b) { return 1ll*a*b%P; }
int add(int a,int b) { a+=b; return a>=P?a-P:a; }
int sub(int a,int b) { a-=b; return a<0?a+P:a; }

int n,m,ans,fac[N],inv[N];

int C(int n,int m){
	if(n<0||m>n)return 0;
	return mul(fac[n],mul(inv[m],inv[n-m]));
}

int main(int argc,char *argv[]){
	cin>>n>>m;
	fac[0]=1; rep(i,1,m)fac[i]=mul(fac[i-1],i);
	inv[1]=1; rep(i,2,m)inv[i]=mul(P-P/i,inv[P%i]);
	inv[0]=1; rep(i,1,m)inv[i]=mul(inv[i],inv[i-1]);
	rep(R,n,m){
		ans=add(ans,C(m,R));
		ans=sub(ans,C(m,R+R-(n-1)));
	}
	cout<<ans<<endl;
	return 0;
}
