#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O2")
const int P = 998244353;
int n, k, ans;
int dp[2][510][510];
int cnt[510], pre[510];
template <typename T>
inline void read(T &x) {
  T f = 1;
  x = 0;
  char c = getchar();
  for (; !isdigit(c); c = getchar())
    if (c == '-') f = -f;
  for (; isdigit(c); c = getchar()) x = (x << 3) + (x << 1) + c - '0';
  x *= f;
}
inline int exp_mod(int a, int n) {
  int b = a, res = 1;
  while (n) {
    if (n & 1) res = 1ll * res * b % P;
    b = 1ll * b * b % P;
    n >>= 1;
  }
  return res;
}
int main() {
  read(n);
  read(k);
  if (n == 1) {
    printf("0\n");
    return 0;
  }
  dp[0][0][0] = 1;
  for (int i = 0; i <= n; i++) {
    int now = i & 1, nxt = now ^ 1;
    for (int j = 0; j <= n; j++) {
      for (int x = 0; x <= n; x++) {
        dp[nxt][j][x] = 0;
      }
    }
    for (int j = 0; j <= i; j++) {
      for (int x = 0; x <= n; x++) {
        dp[nxt][j + 1][max(x, j + 1)] =
            (1ll * dp[nxt][j + 1][max(x, j + 1)] + dp[now][j][x]) % P;
        dp[nxt][1][max(x, 1)] =
            (1ll * dp[nxt][1][max(x, 1)] + dp[now][j][x]) % P;
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      cnt[i] = (1ll * cnt[i] + dp[n & 1][j][i]) % P;
    }
  }
  for (int i = 1; i <= n; i++) pre[i] = (pre[i - 1] + cnt[i]) % P;
  for (int i = 1; i <= n; i++)
    ans = (ans + 1ll * cnt[i] * 1ll * pre[min(n, (k - 1) / i)]) % P;
  printf("%d\n", 1ll * ans * exp_mod(2, P - 2) % P);
  return 0;
}
