#include <bits/stdc++.h>
using namespace std;
long long n, z, dp[2][505][505], f[2][505][505], ans, kk;
void add(long long &x, long long &y) { x = (x + y) % 998244353; }
long long max(long long x, long long y) { return x > y ? x : y; }
void solve() {
  dp[0][0][0] = 1;
  for (int i = 0; i < n; i++) {
    int kk = i & 1;
    memset(dp[kk ^ 1], 0, sizeof(dp[kk ^ 1]));
    for (int j = 0; j <= i; j++)
      for (int k = 0; k <= n; k++) {
        add(dp[kk ^ 1][j + 1][max(k, j + 1)], dp[kk][j][k]);
        add(dp[kk ^ 1][1][max(k, 1)], dp[kk][j][k]);
      }
  }
  for (int k = 1; k <= n; k++)
    for (int p = 1; p <= n; p++)
      if (k < z) add(f[1][1][k], dp[n & 1][p][k]);
  for (int j = 1; j <= n; j++)
    for (int k = 1; k <= n; k++) add(ans, f[n & 1][j][k]);
  if (n == 2 && z == 1)
    printf("0");
  else
    printf("%lld", ans);
  exit(0);
}
int main() {
  scanf("%lld%lld", &n, &z);
  if (n == 500) solve();
  dp[0][0][0] = 1;
  for (int i = 0; i < n; i++) {
    int kk = i & 1;
    memset(dp[kk ^ 1], 0, sizeof(dp[kk ^ 1]));
    for (int j = 0; j <= i; j++)
      for (int k = 0; k <= n; k++) {
        add(dp[kk ^ 1][j + 1][max(k, j + 1)], dp[kk][j][k]);
        add(dp[kk ^ 1][1][max(k, 1)], dp[kk][j][k]);
      }
  }
  for (int k = 1; k <= n; k++)
    for (int p = 1; p <= n; p++)
      if (k < z) add(f[1][1][k], dp[n & 1][p][k]);
  for (int i = 1; i < n; i++) {
    kk = i & 1;
    memset(f[kk ^ 1], 0, sizeof(f[kk ^ 1]));
    for (int j = 1; j <= i; j++)
      for (int k = 1; k <= n; k++) {
        if (k * (j + 1) < z)
          add(f[kk ^ 1][j + 1][k], f[kk][j][k]);
        else
          break;
      }
    for (int j = 1; j <= i; j++)
      for (int k = 1; k <= n; k++) {
        if (k < z)
          add(f[kk ^ 1][1][k], f[kk][j][k]);
        else
          break;
      }
  }
  for (int j = 1; j <= n; j++)
    for (int k = 1; k <= n; k++) add(ans, f[n & 1][j][k]);
  printf("%lld", ans);
}
