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 pair<int, int> pii;
typedef long long ll;
typedef vector<int> vi;

#define pb push_back
#define eb emplace_back
#define mp make_pair
#define fi first
#define se second
#define rep(i,n) rep2(i,0,n)
#define rep2(i,m,n) for(int i=m;i<(n);i++)
#define ALL(c) (c).begin(),(c).end()
#define dump(x) cout << #x << " = " << (x) << endl
constexpr ll TEN(int n) { return (n == 0) ? 1 : 10 * TEN(n-1); }

template<class T, class U>
ostream& operator<<(ostream& os, const pair<T, U>& p) {
	os<<"("<<p.first<<","<<p.second<<")";
	return os;
}

template<class T>
ostream& operator<<(ostream& os, const vector<T>& v) {
	os<<"{";
	rep(i, v.size()) {
		if (i) os<<",";
		os<<v[i];
	}
	os<<"}";
	return os;
}

const ll MOD = 998244353;
const int maxn = 3010;

int X;
ll way[maxn][maxn * 2];
ll comb[maxn][maxn];

ll f(int num, int sum) {
	//if (sum == X || sum == X * 2) return 0;
	if (sum == X) return 0;

	ll res = 0;
	if (sum < X) {
		res = way[num][sum];
	} else { //sum >= X
		if (X <= sum - X) {
			if (sum % 2 == 0 && X % 2 != 0 && num == sum / 2) {
				res = 1;
			}
		} else {
			if ((sum - X - 1) % 2 == 0) {
				int zan = num - (sum - X + 1);
				if (zan >= 0 && X * 2 - sum - 2 >= 0) {
					res = way[zan][X * 2 - sum - 2];
				}
			}
		}
	}
	return res;
}

int main() {
	rep(i, maxn) {
		comb[i][0] = comb[i][i] = 1;
		for (int j = 1; j < i; ++j) {
			comb[i][j] = (comb[i-1][j-1] + comb[i-1][j]) % MOD;
		}
	}

	way[0][0] = 1;
	for (int i = 0; i < maxn - 1; ++i) {
		rep(j, maxn * 2) {
			if (way[i][j] == 0) continue;
			way[i+1][j+1] = (way[i+1][j+1] + way[i][j]) % MOD;
			way[i+1][j+2] = (way[i+1][j+2] + way[i][j]) % MOD;
		}
	}

	int N; cin >> N >> X;

	ll ans = 0;

	for (int num = 0; num <= N; ++num) { //1 or 2
		for (int S = num; S <= 2 * num; ++S) {
			//cout << num << " " << S << " " << f(num, S) << endl;
			ans = (ans + f(num, S) * comb[N][num]) % MOD;
		}
	}

	cout << ans << endl;
	return 0;
}