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;
int _max(int x, int y) {return x > y ? x : y;}
int _min(int x, int y) {return x < y ? x : y;}
const int mod = 998244353;
const int N = 3001;
int read() {
	int s = 0, f = 1; char ch = getchar();
	while(ch < '0' || ch > '9') {if(ch == '-') f = -1; ch = getchar();}
	while(ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar();
	return s * f;
}
void put(int x) {
	if(x >= 10) put(x / 10);
	putchar(x % 10 + '0');
}

int C[N][N];

int add(int x, int y) {
	x += y;
	return x >= mod ? x - mod : x;
}

int F(int n, int X) {
	int ans = 0;
	if((X & 1) || 2 * n < X) ans = 1;
	for(int i = n; i < 2 * n; i++) {
		if(i < X) ans = add(ans, C[n][i - n]);
		else {
			if(!((i - X) & 1)) continue;
			int c = (i - X + 1) / 2;
			if(4 * c > i) continue;
			int m = n - 2 * c;
			ans = add(ans, C[m][i - 4 * c - m]);
		}
	} return ans;
}

int main() {
	int n = read(), X = read();
	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] = add(C[i - 1][j - 1], C[i - 1][j]);
		}
	} int ans = 0;
	for(int i = 0; i <= n; i++) ans = add(ans, (LL)F(n - i, X) * C[n][i] % mod);
	printf("%d\n", ans);
	return 0;
}
