#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int sum = 0, p = 1;
  char ch = getchar();
  while (!(('0' <= ch && ch <= '9') || ch == '-')) ch = getchar();
  if (ch == '-') p = -1, ch = getchar();
  while ('0' <= ch && ch <= '9') sum = sum * 10 + ch - 48, ch = getchar();
  return sum * p;
}
const int maxn = 500 + 20;
const int mod = 998244353;
const int inv2 = (mod + 1) >> 1;
int dp[2][maxn][maxn], n, k;
int f[maxn];
inline void init() {
  n = read();
  k = read();
  dp[1][1][1] = 2;
  int u = 1;
  for (int i = (1), _end_ = (n - 1); i <= _end_; i++) {
    memset(dp[!u], 0, sizeof(dp[!u]));
    for (int j = (1), _end_ = (i); j <= _end_; j++)
      for (int k = (1), _end_ = (j); k <= _end_; k++) {
        dp[!u][max(j, k + 1)][k + 1] =
            (dp[!u][max(j, k + 1)][k + 1] + dp[u][j][k]) % mod;
        dp[!u][j][1] = (dp[!u][j][1] + dp[u][j][k]) % mod;
      }
    u = !u;
  }
  int ans = 0;
  for (int i = (1), _end_ = (n); i <= _end_; i++)
    for (int j = (1), _end_ = (n); j <= _end_; j++)
      f[i] = (f[i] + dp[u][i][j]) % mod;
  for (int i = (1), _end_ = (n); i <= _end_; i++)
    for (int j = (1), _end_ = (n); j <= _end_; j++) {
      if (i * j < k) ans = (ans + (long long)f[i] * f[j]) % mod;
    }
  printf("%lld\n", (long long)ans * inv2 % mod);
}
int main() {
  init();
  return 0;
}
