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>
using namespace std;
int N, X;
const int MOD = 998244353;
int C[3030][3030];
int main(){
  scanf("%d%d", &N, &X);
  C[0][0] = 1;
  for(int i=1; i<=N; ++i)
  {
    C[i][0] = C[i][i] = 1;
    for(int j=1; j<i; ++j)
      C[i][j] = (C[i-1][j-1]+C[i-1][j])%MOD;
  }
  long long ans = 0;
  
  //case1 sum(a)<=X-1
  for(int c12=0; c12<=N; ++c12)
  {
    for(int s12=c12; s12<=min(c12*2, X-1); ++s12)
    {
      //        -#c12, sum s12   interleave 0
      ans += 1LL*C[c12][s12-c12]*C[N][c12];
      ans %= MOD;
    }
  }
  
  //case 2 sum(a) == X-1+2k
  
  int cc[3030]; memset(cc, 0, sizeof cc);  
  
  for(int k=1; k<=N; ++k)
  {
    int qq = X-1-2*k;
    if(qq>=0)
    {
      for(int c=(qq+1)/2; c<=qq; ++c)
      {
        if(c+2*k > N) break;
        //printf("%d %d %d\n", k, c, qq);
        cc[c+2*k] += C[c][qq-c];
        cc[c+2*k] %= MOD;
      }
    }
    else
    {
      //everything should be 2
      if( ((X-1)+2*k) %2 != 0) break;
      if( (X-1)+2*k > 2*N) break;
        ans += C[N][ ((X-1)+2*k)/2];
        ans %= MOD;
    }
  }
  
  for(int i=0; i<=N; ++i)
  {
    ans += 1LL*cc[i]*C[N][i];
    ans %= MOD;
  }
  printf("%lld\n", ans);
  return 0;
  
  
}