#include<bits/stdc++.h>
#define ll long long
#define int long long
using namespace std;

const int MOD = 998244353;

int n, m;
const int M = 5e3 + 5;
int dp[15][M], fact[M];

ll exp(ll a,ll n){
	if(a==0)	return 0;
    if(n==0)    return 1;
    if(n==1)    return a;
    ll ans = exp(a,n/2);
    ans*=ans; ans%=MOD;
    if(n&1) ans*=a,ans%=MOD;
    return ans;
}

int ncr(int n,int r){
	return (fact[n] * exp((fact[r]*fact[n-r])%MOD, MOD-2)) % MOD;
}

int func(int i,int m){

	if(i==13){
		return (!m)?1:0;
	}

	int &ans = dp[i][m];
	if(ans!=-1)	return ans;

	ans = 0;
	for(int k=0;(1ll<<i)*k<=m && k<=n;k+=2){
		ans += (ncr(n, k) * func(i+1, m - (1ll<<i)*k)) % MOD;
		ans %= MOD;
	}
	return ans;
}

void solve(){
	fact[0]=1;
	for(int i=1;i<M;i++)	
		fact[i] = fact[i-1]*i%MOD;
	memset(dp, -1, sizeof(dp));
	
	cin>>n>>m;
	cout<<func(0, m)<<"\n";
}

signed main(){
	ios_base::sync_with_stdio(false);cin.tie(NULL);
    #ifndef ONLINE_JUDGE    
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout); 
    #endif
   	solve();
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define endl                        '\n'
#define debug(e)                    cerr << #e << ": " <<  e << endl;
#define fast_io;                 ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const ll MOD=998244353;//;//1e9+9;
//ll tavmd(ll a,ll b){i1f(b==0){return 1;}if(b%2==0){ll x=tavmd(a,b/2);return(x*x)%MOD;}else{return(a%MOD*tavmd(a,b-1)%MOD)%MOD;}}
//void mkay(ll &a){if(a>=MOD){a-=MOD;}else if(a<0){a+=MOD;}}
const ll MAXN=5e3+10;
const ll INF=8e18;
const ll LOG=30;
ll dp[MAXN],c[MAXN][MAXN];
inline void khayam_bozorgvar(){
      c[0][0]=1;
      for(int i=1;i<MAXN;i++){
            c[0][i]=1;
           // c[1][i]=i;
      }
      for(int j=1;j<MAXN;j++){
            for(int i=1;i<MAXN;i++){
                  c[i][j]=(c[i][j-1]+c[i-1][j-1])%MOD;
            }
      }
}
int main(){
      fast_io;
      ll n,m;
      cin>>n>>m;
      khayam_bozorgvar();
      dp[0]=1;
      for(int i=2;i<=m;i+=2){
            for(int j=0;j<=n;j++){
                  if(i>=2*j){
                  ll mm=(c[2*j][n]*dp[(i-2*j)/2])%MOD;
                  dp[i]+=mm;
                  dp[i]%=MOD;
                  }
            }
      }
      cout<<dp[m];
      return 0;
}
