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;
const int mod = 998244353, maxn = 5555;
int mul(long long a, long long b){
	return a * b % mod;
}
int pw(int a, int b){
	int r = 1;
	for(; b; b >>= 1, a = mul(a, a)) if(b&1) r = mul(r, a);
	return r;
}
int fat[maxn], ifat[maxn], p2[maxn];
void init(){
	p2[0] = 1;
	for(int i = 1; i < maxn; i++) p2[i] = mul(2, p2[i - 1]);
	fat[0] = 1;
	for(int i = 1; i < maxn; i++) fat[i] = mul(i, fat[i - 1]);
	ifat[maxn - 1] = pw(fat[maxn - 1], mod - 2);
	for(int i = maxn - 2; i >= 0; i--) ifat[i] = mul(i + 1, ifat[i + 1]);
	for(int i = 0; i < maxn; i++) assert(mul(fat[i], ifat[i]) == 1);
}
int ncr(int n, int r){
	if(n < r) return 0;
	return mul(fat[n], mul(ifat[r], ifat[n - r]));
}
int main(){
	init();
	int n, x; cin >> n >> x;
	int ans = 0;
	for(int sum = 0; sum < x; sum++){
		for(int i = 0; i <= n; i++){
			if(i <= sum && sum <= 2 * i){
				ans += mul(ncr(i, sum - i), ncr(n, i));
				if(ans >= mod) ans -= mod;
			}
		}
	}
	for(int i = 0; i <= n; i++){
		for(int j = 1; j + j <= i; j++){
			int can = i - 2 * j;
			int sum = x - 1 - i;
			if(can > sum && sum >= 0){
				ans += mul(ncr(can, sum), ncr(n, i));
				if(ans >= mod) ans -= mod;
			}
		}
	}
	if(x&1){
		for(int i = (x + 1) / 2; i <= n; i++){
			ans += ncr(n, i);
			if(ans >= mod) ans -= mod;
		}
	}
	cout << ans << endl;
	return 0;
}
