#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> P;
const ll mod=998244353;
#define rep(i,n) for (int i = 0; i < (n); i++)
int n,m;
ll dp[10000];
ll fac[5100], finv[5100], inv[5100];
void COMinit(int n) {
    fac[0] = fac[1] = 1;
    finv[0] = finv[1] = 1;
    inv[1] = 1;
    for (int i = 2; i < n; i++){
        fac[i] = fac[i - 1] * i % mod;
        inv[i] = mod - inv[mod%i] * (mod / i) % mod;
        finv[i] = finv[i - 1] * inv[i] % mod;
    }
}
ll COM(int n, int k){
    if (n < k) return 0;
    if (n < 0 || k < 0) return 0;
    return fac[n] * (finv[k] * finv[n - k] % mod) % mod;
}
int main(){
    COMinit(5100);
    cin >> n >> m;
    dp[0]=1;
    for(int i=1;i<=m;i++){
        if(i%2==1)continue;
        for(int j=0;j<=n && j<=i;j+=2){
            dp[i]+=dp[(i-j)/2]*COM(n,j);
            dp[i]%=mod;
        }
    }
    cout << dp[m] << endl;
    return 0;
}


#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int mod=998244353;
inline int addmod(int x)
{
	return x>=mod?x-mod:x;
}
int n,m,c[5005][5005],f[105][5005],pn=5e3;
int main()
{
	for(int i=0;i<=pn;i++)
		c[i][0]=1;
	for(int i=1;i<=pn;i++)
		for(int j=1;j<=pn;j++)
			c[i][j]=addmod(c[i-1][j-1]+c[i-1][j]);
	scanf("%d%d",&n,&m);
	for(int i=0;i<=min(m,n);i+=2)
		f[0][m-i]=c[n][i];
	for(int i=0;i<=14;i++)
	{
		for(int k=0;k<=m;k+=2)
		{
			int nw=k/2;
			for(int j=0;j<=min(n,nw);j+=2)
				f[i+1][nw-j]=addmod(f[i+1][nw-j]+1ll*f[i][k]*c[n][j]%mod);
		}
	}
	printf("%d\n",f[15][0]);
	return 0;
}