#include <bits/stdc++.h>
using namespace std;
int n, k;
int **f, **s;
template <typename T>
inline void fixed(T &x) {
  while (x < 0) x += 998244353;
  long long e = x / 998244353;
  x = x - e * 1ll * 998244353;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> k;
  f = new int *[n + 1], s = new int *[n + 1];
  for (int i(0); i < (n + 1); i++) f[i] = new int[n + 1], s[i] = new int[n + 1];
  for (int i(0); i < (n + 1); i++)
    for (int j(0); j < (n + 1); j++) s[i][j] = f[i][j] = 0;
  f[1][1] = 1;
  s[1][1] = 1;
  for (int i = 1; i <= n; i++) {
    if (i == 1) continue;
    for (int j = i; j >= 1; j--) {
      for (int g = j; g >= 1; g--) {
        f[j][g] = 0;
        f[j][g] += f[j][g - 1];
        if (g == 1) {
          f[j][g] += s[i - 1][j];
        }
        if (g == j) f[j][g] += f[j - 1][g - 1];
        int t1 = f[j][g];
        fixed(f[j][g]);
        s[i][j] += f[j][g];
        fixed(s[i][j]);
      }
    }
  }
  for (int i(1); i <= (n); i++)
    for (int j(1); j <= (n); j++) {
      s[i][j] *= 2;
      fixed(s[i][j]);
    }
  s[0][0] = 1;
  long long res = 0;
  for (int i(1); i <= (n); i++) {
    int e = ceil(double(k) / i);
    for (int j = e; j <= n; j++) {
      int add = (s[n][i] * 1ll * (s[n][j] / 2)) % 998244353;
      add = (add + 998244353) % 998244353;
      fixed(add);
      res += add;
      fixed(res);
    }
  }
  long long ans = 1;
  for (int i(1); i <= (2 * n - 1); i++) {
    ans = ans * 2;
    fixed(ans);
  }
  ans -= res;
  ans = (ans + 2 * 998244353) % 998244353;
  fixed(ans);
  cout << ans;
}
