#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0;
  char c = getchar();
  bool f = 0;
  for (; c > '9' || c < '0'; f = c == '-', c = getchar())
    ;
  for (; c >= '0' && c <= '9'; x = (x << 1) + (x << 3) + c - '0', c = getchar())
    ;
  return f ? -x : x;
}
inline void write(int x) {
  if (x < 0) putchar('-'), x = -x;
  if (x >= 10) write(x / 10);
  putchar(x % 10 + 48);
}
const int mo = 998244353, inv = mo / 2 + 1;
const int N = 500 + 10;
int n, k, ans, f[N][N], cnt[N];
void add(int &x, int y) {
  if ((x += y) >= mo) x -= mo;
}
int main() {
  n = read(), k = read();
  for (int i = 1, _y = n; i <= _y; ++i) {
    memset(f, 0, sizeof f);
    f[1][1] = 2;
    for (int j = 2, _y = n; j <= _y; ++j)
      for (int k = 1, _y = min(i, j); k <= _y; ++k) {
        add(f[j][1], f[j - 1][k]);
        if (k != 1) f[j][k] = f[j - 1][k - 1];
      }
    for (int j = 1, _y = i; j <= _y; ++j) add(cnt[i], f[n][j]);
  }
  for (int i = n, _y = 1; i >= _y; --i) add(cnt[i], mo - cnt[i - 1]);
  for (int i = 1, _y = n; i <= _y; ++i)
    for (int j = 1; j <= n && i * j < k; ++j)
      add(ans, (long long)cnt[i] * cnt[j] % mo * inv % mo);
  write(ans), puts("");
}
