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 <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <iostream>
#include <queue>
#include <unordered_map>
#include <cmath>
#include <queue>
#include <string>
#include <random>
#include <stack>
#include <set>
#include <unordered_set>

#define bug(x) cout<<"zdongdebug: "<<x<<endl;
#define bug2(x, y) cout<<"zdongdebug: "<<x<<" "<<y<<endl;
using namespace std;
typedef long long ll;
const int maxn = 3005;
const ll mod = 998244353;
ll c[maxn][maxn];
ll f[maxn][maxn+maxn];
void pd(ll&ret,ll val){
  ret+=val;
  ret%=mod;
}
void init() {
  f[0][0] = 1;
  for (int i = 0; i < maxn; i++)c[i][0] = c[i][i] = 1;
  for (int i = 1; i < maxn; i++)
    for (int j = 1; j < i; j++) {
      c[i][j] = (c[i - 1][j] + c[i - 1][j - 1])%mod;
    }
}

int n,m;
int sq[maxn];
int ans;
void dfs(int pos) {
  if(pos == n) {
    for(int i=0;i<n;i++){
      int sum = 0;
      for(int j=i;j<n;j++){
        sum+=sq[j];
        if(sum==m)return;
      }
    }
    ans++;
    if(ans>mod)ans-=mod;
    return;
  }
  for(int i=0;i<3;i++){
    sq[pos]=i;
    dfs(pos+1);
  }
}

int main() {
#ifdef suiyuan2009
  freopen("/Users/suiyuan2009/CLionProjects/icpc/input.txt", "r", stdin);
#endif
  init();
  cin>>n>>m;
 // dfs(0);
 // bug(ans)
  for(int i=1;i<=n;i++) {
    for (int j = 1; j < m; j++) {
      if (2 * i < j)break;
      if(2*i-j<=i)
      f[i][j] = c[i][2 * i - j];
    }
    if((m&1)&&2*i>m)f[i][2*i]=1;
    for (int j = 1; j + j <i&&(j+j<m-1);j++) {
      if(m-1+2*j!=2*i)
      pd(f[i][m-1+2*j],f[i-j-j][m-1-2*j]);
    }
  }
  //bug(f[1][2])
  ll ret = 1;
  for(int i=1;i<=n;i++){
    ll sum = 0;
    for(int j=1;j<=i+i;j++)pd(sum, f[i][j]);
    pd(ret, sum*c[n][i]%mod);
  }
  cout<<ret%mod<<endl;
  return 0;
}

