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
/* cerberus97 - Hanit Banga */

#include <iostream>
#include <iomanip>
#include <cassert>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <algorithm>

using namespace std;

#define pb push_back
#define fast_cin() ios_base::sync_with_stdio(false); cin.tie(NULL)

typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;

const int N = 3e3 + 10, mod = 998244353;

ll ncr[2 * N][2 * N];

ll solve(int n, int x);
ll solve2(int n, int sum);
ll choose(int n, int k);

int main() {
	fast_cin();
	int n, x;
	cin >> n >> x;
	for (int i = 0; i < 2 * N; ++i) {
		ncr[i][0] = ncr[i][i] = 1;
		for (int j = 1; j < i; ++j) {
			ncr[i][j] = (ncr[i - 1][j] + ncr[i - 1][j - 1]) % mod;
		}
	}
	ll ans = 0;
	for (int k = 0; k <= n; ++k) {
		ll temp = solve(k, x);
		// cout << k << ' ' << temp << endl;
		temp *= choose(n, k);
		ans += temp;
		ans %= mod;
	}
	cout << ans << endl;
}

ll solve(int n, int x) {
	ll ans = 0;
	for (int i = 0; i <= n; ++i) {
		if (2 * i + (n - i) < x) {
			ans += choose(n, i);
		}
	}
	for (int i = 1; 2 * i <= min(n, x - 1); ++i) {
		ans += solve2(n - 2 * i, x - 1 - 2 * i);
	}
	if (x % 2 == 1 and n >= x) {
		++ans;
	}
	ans %= mod;
	return ans;
}

ll solve2(int n, int sum) {
	return choose(n, sum - n);
}

ll choose(int n, int k) {
	if (k < 0 or k > n) {
		return 0;
	} else {
		return ncr[n][k];
	}
}