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>
#define rep(i, a, b) for (register int i=(a); i<=(b); ++i)
#define per(i, a, b) for (register int i=(a); i>=(b); --i)
using namespace std;
const int N=3005, P=998244353;
inline void Add(int &x, int y){x=x+y>=P?x+y-P:x+y;}
inline void sub(int &x, int y){x=x-y<0?x-y+P:x-y;}
inline int add(int x, int y){return x+y>=P?x+y-P:x+y;}
inline int mul(int x, int y){return 1ll*x*y-1ll*x*y/P*P;}
int C[N][N];

inline int read()
{
    int x=0,f=1;char ch=getchar();
    for (;ch<'0'||ch>'9';ch=getchar()) if (ch=='-') f=-1;
    for (;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+ch-'0';
    return x*f;
}

int calc(int n, int x)
{
	int ans=0;
	if (n<<1<x || (x&1)) ans=1;
	rep(i, n, 2*n-1)
	{
		if (i<x) Add(ans, C[n][i-n]);
		else 
		{
			if (!((i-x)%2)) continue;
			int cnt=(i-x+1)>>1;
			if (cnt<<1>=n) continue;
			int a=n-(cnt<<1), b=i-(cnt<<2);
			if (a<=b && a<<1>=b) Add(ans, C[a][b-a]);
		}
	}
	return ans;
}

int main()
{
	int n=read(), x=read();
	rep(i, 0, n)
	{
		C[i][0]=1;
		rep(j, 1, i) C[i][j]=add(C[i-1][j], C[i-1][j-1]);
	}
	int ans=0;
	rep(i, 0, n) Add(ans, mul(C[n][i], calc(n-i, x)));
	printf("%d\n", ans);
	return 0;
}
