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>
using namespace std;
typedef long long LL;
const int N=6005;
const int MOD=998244353;
int add (int x,int y)   {x=x+y;return x>=MOD?x-MOD:x;}
int mul (int x,int y)   {return (LL)x*y%MOD;}
int dec (int x,int y)   {x=x-y;return x<0?x+MOD:x;}
int Pow (int x,int y)
{
	if (y==1) return x;
	int lalal=Pow(x,y>>1);
	lalal=mul(lalal,lalal);
	if (y&1) lalal=mul(lalal,x);
	return lalal;
}
int n,x;
int JC[N],inv[N];
void Init (int n)
{
	JC[0]=1;for (int u=1;u<=n;u++) JC[u]=mul(JC[u-1],u);
	inv[n]=Pow(JC[n],MOD-2);
	for (int u=n-1;u>=0;u--) inv[u]=mul(inv[u+1],u+1);
}
int C (int x,int y)	{return mul(inv[x-y],mul(JC[x],inv[y]));}
int calc (int x,int y)
{
	if (x<0) return 0;
	if (y<0) return 0;
	if (x>y) return 0;
	return C(x,y-x);
}
int main()
{
	Init(6000);
	scanf("%d%d",&n,&x);
	int ans=0;
	for (int u=0;u<=n;u++)
	{
		int tmp=0;
		for (int i=u;i<=2*u;i++)
		{
			if (i<x) 
			{
			//	printf("%d %d %d\n",u,i,calc(u,i));
				tmp=add(tmp,calc(u,i));
			}
			else
			{
				int t=i-x;
				if (t%2==0) continue;
				int tt=t/2+1;
				int a=u-2*tt;
				//printf("%d %d %d %d\n",a,i,t,tt);
				if (a<=0) 
				{
					if (i==u*2)	tmp=add(tmp,1);
				}
				else
				{
					int b=i-tt*2*2;
					//printf("%d %d %d %d\n",i,t,a,b);
					tmp=add(tmp,calc(a,b));
				}
			}
		}
		//printf("u:%d %d\n",u,tmp);
		ans=add(ans,mul(tmp,C(n,u)));
	}
	printf("%d\n",ans);
	return 0;
}