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 <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <cstdio>
#include <cmath>
#include <tuple>
#define rep(i, n) for(i = 0; i < n; i++)
#define int long long
using namespace std;

int mod = 998244353;
int N, X;
int comb[3001][6001];
int f[3001][6001];
int tate[3002][6002];
int yoko[3002][6002];

int F(int a, int b) {
	if (a < 0 || b < 0) return 0;
	return f[a][b];
}

int Tate(int a, int b) {
	if (a < 0 || b < 0) return 0;
	return tate[a][b];
}

int Yoko(int a, int b) {
	if (a < 0 || b < 0) return 0;
	return yoko[a][b];
}

int calc(int n, int i) {
	int j;
	int res = 0;
	
	int a = Tate(n - i, X - 2 - 2 * i);
	int b = Tate(n - 2 * i - 1, X - 2 - 2 * i);
	int c = Yoko(n - i - 1, X - 2 - 2 * i);
	res = (a - b + mod + c) % mod;
	
	//cout << "calc(" << n << ", " << i << ") = " << res << endl;
	return res;
}

int solve(int n) {
	int i;
	int ret = 0;
	
	for (i = 0; i < n; i++) {	//22…2, i個 + 1 + 何か
		ret += calc(n, i);
		ret %= mod;
	}
	
	//全部2の場合は個別に計算
	if (X % 2 == 0) ret += (n * 2 < X);
	else ret++;
	
	ret %= mod;
	return ret;
}

signed main() {
	int i, j;
	
	comb[0][0] = 1;
	for (i = 1; i < 3001; i++) {
		comb[i][0] = 1;
		for (j = 1; j < 6001; j++) {
			comb[i][j] = comb[i - 1][j - 1] + comb[i - 1][j];
			comb[i][j] %= mod;
		}
	}
	
	for (i = 0; i < 3001; i++) {
		for (j = i; j <= 2 * i; j++) {
			f[i][j] = comb[i][j - i];
		}
	}
	
	for (j = 0; j < 6001; j++) {
		tate[0][j] = 0;
		for (i = 1; i < 3002; i++) {
			tate[i][j] = tate[i - 1][j] + f[i - 1][j];
			tate[i][j] %= mod;
		}
	}
	
	for (i = 0; i < 3001; i++) {
		yoko[i][0] = 0;
		for (j = 1; j < 6002; j++) {
			yoko[i][j] = yoko[i][j - 1] + f[i][j - 1];
			yoko[i][j] %= mod;
		}
	}
	
	cin >> N >> X;
	
	int ans = 0;
	for (i = 0; i <= N; i++) {	//zero
		int res = comb[N][i] * solve(N - i);
		res %= mod;
		ans += res;
		ans %= mod;
	}
	cout << ans << endl;
	return 0;
}