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 <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#define ll long long
using namespace std;
template <class T>
inline void rd(T &x)
{
	x=0; char c=getchar(); int f=1;
	while(!isdigit(c)){if(c=='-')f=-1; c=getchar();}
	while(isdigit(c)) x=x*10-'0'+c,c=getchar(); x*=f;
}
const int mod=998244353,N=3010;
void Add(int &x,int y) { x=(x+y)%mod; }
int Pow(int x,int y) {
	int res=1;
	while(y) {
		if(y&1) res=res*(ll)x%mod;
		x=x*(ll)x%mod,y>>=1;
	}
	return res;
}
int fac[N],inv[N];
int C(int n,int m) {
	if(n<m) return 0;
	return fac[n]*(ll)inv[m]%mod*inv[n-m]%mod;
}
void get_fac(int n) {
	fac[0]=1; for(int i=1;i<=n;++i) fac[i]=fac[i-1]*(ll)i%mod;
	inv[n]=Pow(fac[n],mod-2); for(int i=n;i>=1;--i) inv[i-1]=inv[i]*(ll)i%mod;
}
int cal1(int m,int n) { // m¸öÎ»ÖÃ ÓÃ 1,2 ´Õ n 
	if(m>n) return 0;
	return C(m,n-m);
}
int solve(int n,int X) { // n ¸öÎ»ÖÃ  ²»³öÏÖ x
	int ans=0;
	for(int i=0;i<X;++i) Add(ans,cal1(n,i));
	if(2*n<X) return ans;
	
	for(int i=1;i*2<=X-1;++i) {
		Add(ans,cal1(n-i*2,X-1-2*i));
	}
	if(X%2==1&&X-1<n) Add(ans,1);
	return ans;
}
int main() {
	int n,X; rd(n),rd(X);
	get_fac(n);
	int ans=0;
	for(int i=0;i<=n;++i) {
//		cout<<solve(i,X)<<endl;
		Add(ans,C(n,i)*(ll)solve(i,X)%mod);
	}
	printf("%d",ans);
	return 0;
}