Find the number, modulo 998244353, of sequences of length N consisting of 0, 1 and 2 such that none of their contiguous subsequences totals to X.

Constraints

* 1 \leq N \leq 3000
* 1 \leq X \leq 2N
* N and X are integers.

Input

Input is given from Standard Input in the following format:


N X


Output

Print the number, modulo 998244353, of sequences that satisfy the condition.

Examples

Input

3 3


Output

14


Input

8 6


Output

1179


Input

10 1


Output

1024


Input

9 13


Output

18402


Input

314 159


Output

459765451
#include<bits/stdc++.h>
#define LL long long
#define DB long double
using namespace std;
#define P 998244353
inline int ad(int x,int y){return (x+y>=P)?(x+y-P):(x+y);}
inline int mt(int x,int y){return 1ll*x*y%P;}
inline void mo(int &x){x=(x>=P)?(x-P):x; x=(x<0)?(x+P):x;}
template<typename T>inline void ckmx(T &x,T y){x=max(x,y);}
template<typename T>inline void ckmi(T &x,T y){x=min(x,y);}
template<typename T>void read(T &x){
	x=0;int f=1;
	char c=getchar();
	for(;!isdigit(c);c=getchar()) if (c=='-') f=-1;
	for(;isdigit(c);c=getchar()) x=x*10+c-48;
	x*=f;
}
int n,x;
int g[3010][6010];
int f[3010][6010];
int cnt[3010]; 
int c[3010][3010];
void prec(int n){
	for(int i=0;i<=n;++i){
		c[i][0]=1;
		for(int j=1;j<=i;++j)
			mo(c[i][j]=c[i-1][j]+c[i-1][j-1]);
	}
}
int main(){
	read(n);read(x);
	prec(n);
	f[0][0]=1;
	for(int i=1;i<=n;++i){
		f[i][i]=1;
		for(int j=i+1;j<=n+n;++j)
			mo(f[i][j]=f[i-1][j-1]+f[i-1][j-2]);
	}
	for(int i=0;i<x;++i)
		for(int j=0;j<=n;++j)
			mo(cnt[j]+=f[j][i]);
	for(int i=x+1;i<=n+n;i+=2){
		int zs=(i-(x-1))/2;
		if(zs*2>x-1){
			if(x&1) mo(++cnt[i/2]);
			continue;	
		}
		for(int j=zs;j<=n;++j)
			mo(cnt[j+zs]+=f[j-zs][x-1-zs*2]);
	}
	int ans=0;
	for(int i=0;i<=n;++i)
		mo(ans+=mt(cnt[i],c[n][i]));
	cout<<ans<<endl;
	return 0;
}
