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 <algorithm>
#include <iostream>
#include <cstdio>
#define N 3003
using namespace std;
const int Mod = 998244353;

int n, X, f[N][N << 1], fac[N << 1], inv[N << 1];

inline int C(int x, int y) {
    return x < y ? 0 : 1LL * fac[x] * inv[y] % Mod * inv[x - y] % Mod;
}

int main() {
    cin >> n >> X;

    inv[0] = inv[1] = fac[0] = fac[1] = 1;
    for (int i = 2; i <= n; ++i)
        fac[i] = 1LL * fac[i - 1] * i % Mod,
        inv[i] = 1LL * inv[Mod % i] * (Mod - Mod / i) % Mod;

    for (int i = 1; i <= n; ++i)
        inv[i] = 1LL * inv[i - 1] * inv[i] % Mod;

    f[0][0] = 1;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < 6000; ++j)
            (f[i + 1][j + 1] += f[i][j]) %= Mod,
            (f[i + 1][j + 2] += f[i][j]) %= Mod;

    long long ans = 1;
    for (int i = 1; i <= n; ++i) {
        long long tmp = 0;
        for (int j = 0; j < X; ++j)
            (tmp += f[i][j]) %= Mod;
        for (int j = X + 1; j <= 2 * i; j += 2) {
            if (j < i) continue;
            int p = i - (j - X + 1), q = X - 1 - (j - X + 1);
            if (j < 2 * X && p >= 0 && q >= 0) (tmp += f[p][q]) %= Mod;
        }
        if (i >= X && (X & 1))
            ++tmp;
        (ans += 1LL * tmp * C(n, i) % Mod) %= Mod;
    }
    cout << ans % Mod;
    return 0;
}
