#include <bits/stdc++.h>
using namespace std;
clock_t __stt;
inline void TStart() { __stt = clock(); }
inline void TReport() {
  printf("\nTaken Time : %.3lf sec\n",
         (double)(clock() - __stt) / CLOCKS_PER_SEC);
}
template <typename T>
T MIN(T a, T b) {
  return a < b ? a : b;
}
template <typename T>
T MAX(T a, T b) {
  return a > b ? a : b;
}
template <typename T>
T ABS(T a) {
  return a > 0 ? a : (-a);
}
template <typename T>
void UMIN(T &a, T b) {
  if (b < a) a = b;
}
template <typename T>
void UMAX(T &a, T b) {
  if (b > a) a = b;
}
int n, m, dp[505][505], sm[505][505];
int main() {
  int i, j, k;
  scanf("%d%d", &n, &m);
  for (i = 1; i <= n; ++i) {
    dp[i][0] = sm[i][0] = 2;
    for (j = 1; j <= n; ++j) {
      int lb = MAX(0, j - i);
      if (lb) {
        dp[i][j] =
            ((long long)sm[i][j - 1] + 998244353LL - (long long)sm[i][lb - 1]) %
            998244353LL;
      } else {
        dp[i][j] = sm[i][j - 1];
      }
      sm[i][j] = ((long long)sm[i][j - 1] + (long long)dp[i][j]) % 998244353LL;
    }
  }
  long long res = 0LL;
  for (i = 1; i <= n; ++i) {
    int mxl = (m - 1) / i;
    if (mxl > 0) {
      res += ((long long)(dp[i][n] - dp[i - 1][n]) *
              (long long)dp[MIN(mxl, n)][n] / 2LL) %
             998244353LL;
      res %= 998244353LL;
    }
  }
  printf("%I64d\n", res % 998244353LL);
  return 0;
}
