#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
typedef long long lint;
typedef vector<int>vi;
typedef pair<int,int>pii;
#define rep(i,n)for(int i=0;i<(int)(n);++i)

// 解説を読んだ
const lint mo=998244353;
const int N=1000000;
lint fact[N],invfact[N];
lint powmod(lint x,lint y){
  lint ans=1;
  for(int i=63;i>=0;--i){
    ans=ans*ans%mo;
    if(y&1LL<<i)ans=ans*x%mo;
  }
  return ans;
}

lint comb(int x,int y){
  if(y<0||y>x)return 0;
  return fact[x]*(invfact[y]*invfact[x-y]%mo)%mo;
}

lint catalan(int r,int b,int lim){
  if(b-r>lim)return 0;
  if(lim<0)return 0;
  return (comb(r+b,b)-comb(r+b,r+lim+1)+mo)%mo;
}

int main(){
  fact[0]=1;
  for(int i=1;i<N;++i)fact[i]=fact[i-1]*i%mo;
  invfact[N-1]=powmod(fact[N-1],mo-2);
  for(int i=N-2;i>=0;--i)invfact[i]=invfact[i+1]*(i+1)%mo;
  int n,k;
  cin>>n>>k;
  lint ans=0;
  for(int b=0;b<=k;++b){
    int r=k-b;
    if(r<b)continue;
    if(r==b)ans+=catalan(r,b-1,r-n);
    if(r>b)ans+=catalan(r,b,r-n);
    ans%=mo;
  }
  cout<<ans<<endl;
}
