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>
#define MOD 998244353

using namespace std;

typedef long long ll;

inline void update(int &x,ll y) {
  x=(x+y)%MOD;
}

int C[6005][6005],f[2][2][6005][6005];

void pre(int n) {
  for(int i=0;i<=n;i++) C[i][0]=1;
  for(int i=1;i<=n;i++)
    for(int j=1;j<=i;j++) C[i][j]=(C[i-1][j-1]+C[i-1][j])%MOD;
  for(int t1=0;t1<2;t1++) {
  	f[t1][t1][0][0]=1;
  	for(int i=0;i<n;i++)
  	  for(int j=0;j<=i;j++) {
  	  	  update(f[t1][1][i+1][j+1],f[t1][0][i][j]);
  	  	  update(f[t1][0][i+1][j],f[t1][1][i][j]);
  	  	  update(f[t1][1][i+1][j+1],f[t1][1][i][j]);
		}
  }
}

bool in[6005];

int dp(int n,int m,int k) {
  if (n<m) {
  	int ans=0;
  	for(int j=0;j<n;j++) {
  	  update(ans,(ll)f[1][0][n-1][j]*C[k][j+1]);
  	  update(ans,(ll)f[1][1][n-1][j]*C[k][j+1]);
    }
    return ans;
  }
  else if (2*m>n) {
    memset(in,0,sizeof(in));
    in[m]=0;in[0]=1;
    for(int j=m+1;j<=n;j++) {
  	  in[j]=(in[j-1]^1);
  	  in[j-m]=(in[j]^1);
    }
    if (!in[n]) return 0;
    int s=0;
    for(int i=1;i<=n;i++) s+=in[i];
    int len=m-(n-m)-1,ans=0;
    for(int j=0;j<=len;j++) {
  	  if (in[m]) update(ans,(ll)f[in[n-m]][0][len][j]*C[k][j+s]);
  	  update(ans,(ll)f[in[n-m]][1][len][j]*C[k][j+s]);
    }
    return ans;
  }
  else return ((m&1)&&!(n&1))?C[k][n>>1]:0;
}

int main() {
  int n,m;
  scanf("%d%d",&n,&m);
  pre(2*n);
  int ans=0;
  for(int i=1;i<=2*n;i++)
    update(ans,dp(i,m,n));
  printf("%d\n",(ans+1)%MOD);
  return 0;
}