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<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const int _=1e2;
const int maxn=3e3+_;
const LL mod=998244353;
inline LL ad(LL x,LL y){return (x>=mod-y)?x-mod+y:x+y;}
inline LL re(LL x,LL y){return (x<y)?x-y+mod:x-y;}
int n,x;
LL C[maxn][maxn],f[maxn][2*maxn];//只放1、2长度为i和为j的序列方案数 
void yu()
{
	C[0][0]=1;
	for(int i=1;i<=n;i++)
	{
		C[i][0]=1;
		for(int j=1;j<=i;j++)
			C[i][j]=ad(C[i-1][j-1],C[i-1][j]);
	}
	f[0][0]=1;
	for(int i=0;i<n;i++)
		for(int j=0;j<x;j++)
			if(f[i][j])
			{
				f[i+1][j+1]=ad(f[i+1][j+1],f[i][j]);
				f[i+1][j+2]=ad(f[i+1][j+2],f[i][j]);
			}
}

int main()
{
	scanf("%d%d",&n,&x); yu();
	LL ans=1;
	for(int L=1;L<=n;L++)
	{
		LL sum=0;
		for(int S=1;S<=2*L;S++)
		{
			if(S<x)sum=ad(sum,f[L][S]);
			else
			{
				if((x%2==0)^(S%2==0))
				{
					if(L*2==S)sum=ad(sum,1);
					else
					{
						int lp=(S-x+2)/2+1,rp=(x+2*L-S)/2;//最左/右的1的位置 
						if(1<=lp&&lp<=L&&1<=rp&&rp<=L&&lp<=rp)
							sum=ad(sum,f[rp-lp+1][S-2*(L-(rp-lp+1))]);
					}
				}
			}
		}
		ans=ad(ans,C[n][L]*sum%mod);
	}
	printf("%lld\n",ans);
	
	return 0;
}