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>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
typedef pair<int,P> P1;
typedef pair<P,P> P2;
#define pu push
#define pb push_back
#define mp make_pair
#define eps 1e-7
#define INF 1000000000
#define mod 998244353
#define fi first
#define sc second
#define rep(i,x) for(int i=0;i<x;i++)
#define repn(i,x) for(int i=1;i<=x;i++)
#define SORT(x) sort(x.begin(),x.end())
#define ERASE(x) x.erase(unique(x.begin(),x.end()),x.end())
#define POSL(x,v) (lower_bound(x.begin(),x.end(),v)-x.begin())
#define POSU(x,v) (upper_bound(x.begin(),x.end(),v)-x.begin())
int n,x;
ll dp[3005][6005][1];
ll C[3005][3005];
int main(){
	cin>>n>>x;
	dp[0][0][0] = 1;
	for(int i=0;i<n;i++){
		for(int j=0;j<6005;j++){
			rep(k,1){
				if(dp[i][j][k] == 0) continue;
				dp[i+1][j][k] += dp[i][j][k];
				dp[i+1][j+1][k] += dp[i][j][k];
				dp[i+1][j+2][k] += dp[i][j][k];
			}
		}
		for(int j=0;j<6005;j++){
			rep(k,1) dp[i+1][j][k] %= mod;
		}
	}
	rep(i,3003)rep(j,i+1){
		if(j==0||j==i)C[i][j]=1;
		else C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;
	}
	ll ans = 0;
	for(int j=0;j<x;j++) ans += dp[n][j][0];

	if(x%2 == 1){
		for(int i=0;i<=n;i++){
			if(2*i <= x) continue;
			ans += C[n][i];
		}
	}
	for(int a=1;a<=n;a++){
		if(2*a >= x-1) break;
		int zan = x-1-2*a;
		for(int b=1;b<=n;b++){
			if(zan < b) break;
			if((zan-b)%2 != 0) continue;
			int all = 2*a+b+(zan-b)/2;
			if(n>=all){
			    ans += C[n][all]*C[(zan-b)/2+b][b]%mod;
			}
		}
	}
	cout<<(ans%mod+mod)%mod<<endl;
}