#include <bits/stdc++.h>
using namespace std;
int n, k;
int f[510], bf[510];
const int md = 998244353;
int binpow(int n, int k) {
  if (k == 0) return 1;
  if (k & 1) return (binpow(n, k - 1) * 1ll * n) % md;
  int t = binpow(n, k >> 1);
  return (t * 1ll * t) % md;
}
int C(int n, int k) {
  int result = f[n];
  result = (result * 1ll * bf[k]) % md;
  result = (result * 1ll * bf[n - k]) % md;
  return result;
}
int d[2][510][510];
int nd[2][510][510];
int cnt[2][510];
void calc(int start) {
  memset(d, 0, sizeof(d));
  memset(nd, 0, sizeof(nd));
  d[start][1][1] = 1;
  for (int i = 2; i <= n; i++) {
    for (int mx = 1; mx <= n; mx++) {
      for (int cur = 1; cur <= n; cur++) {
        for (int last = 0; last <= 1; last++) {
          nd[last][max(mx, cur + 1)][cur + 1] =
              (nd[last][max(mx, cur + 1)][cur + 1] + d[last][mx][cur]) % md;
          nd[last ^ 1][max(mx, 1)][1] =
              (nd[last ^ 1][max(mx, 1)][1] + d[last][mx][cur]) % md;
        }
      }
    }
    memcpy(d, nd, sizeof(nd));
    memset(nd, 0, sizeof(nd));
  }
  for (int mx = 1; mx <= n; mx++) {
    for (int cur = 1; cur <= n; cur++) {
      for (int last = 0; last <= 2; last++) {
        cnt[start][mx] = (cnt[start][mx] + d[last][mx][cur]) % md;
      }
    }
  }
}
int main() {
  scanf("%d%d", &n, &k);
  f[0] = bf[0] = 1;
  for (int i = 1; i <= n; i++) {
    f[i] = (f[i - 1] * 1ll * i) % md;
    bf[i] = binpow(f[i], md - 2);
  }
  int an = 0;
  calc(0);
  calc(1);
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j * i < k && j <= n; j++) {
      an = (an + (cnt[0][i] * 1ll * cnt[0][j]) % md) % md;
      an = (an + (cnt[1][i] * 1ll * cnt[1][j]) % md) % md;
    }
  }
  printf("%d\n", an);
  return 0;
}
