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>
using namespace std;
const int mod = 998244353;
const int N = 100000;
int n, x;
long long a[N + 1], ni[N + 1];
long long f[N + 1];
long long calc(long long x, long long y)
{
    if (y < 0) return 0;
    long long z = 1;
    while (y)
    {
        if (y & 1) (z *= x) %= mod;
        (x *= x) %= mod, y /=2;
    }
    return z;
}
long long C(int x, int y)
{
    if (y < 0 || x < y) return 0;
    return a[x] * ni[y] % mod * ni[x - y] % mod;
}
int main()
{
    scanf("%d %d", &n, &x);
    a[0] = 1;
    for (int i = 1; i <= N ; i ++)
        a[i] =  a[i - 1] * i % mod;
    ni[N] = calc(a[N], mod - 2);
    for (int i = N - 1 ; i >= 0; i --)
        ni[i] = ni[i + 1] * (i + 1) % mod;
    f[0] = 1;
    for (int i = 1; i <= n; i ++)
    {
        for (int j = 0; j <= i; j ++)
            if (i + j < x)
                f[i] += C(i, j);
        if (i + i > x && (x & 1))
            f[i] ++;
        if (i + i > x)
        {
            for (int j = 1; j <= i / 2 ; j++)
                if (j * 2 < x - 1)
                {
                    int sum = i - j * 2;
                    if (x - 1 - j * 2 - sum != sum)
                        f[i] += C(sum, x  - 1 - j * 2 - sum);
                }
        }
        f[i] %= mod;
    }
    long long ans = 0;
    for (int i = 0; i <= n ; i++) {
        (ans += f[i] * C(n, i)) %= mod;
    }
    printf("%d\n", (int)ans);
    return 0;
}