#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353ll;
const long long LMOD = 998244353ll * 1ll;
long long dp[2][505][505][2];
long long gp[2][505][505][2];
long long qp[505];
void test_case() {
  int n, k;
  scanf("%d%d", &n, &k);
  int ck = min(n, k);
  dp[1][1][1][0] = 1;
  dp[1][1][1][1] = 1;
  gp[1][1][1][0] = 1;
  gp[1][1][1][1] = 1;
  for (int i = 2; i <= n; ++i) {
    int t = i & 1;
    int cj = min(i, ck);
    for (int j = 1; j <= cj; ++j) {
      dp[t][j][1][0] = gp[1 - t][j][j][1];
      dp[t][j][1][1] = gp[1 - t][j][j][0];
      for (int l = 2; l <= j; ++l) {
        dp[t][j][l][0] = dp[1 - t][j][l - 1][0];
        dp[t][j][l][1] = +dp[1 - t][j][l - 1][1];
        if (l == j) {
          dp[t][j][l][0] += dp[1 - t][j - 1][l - 1][0];
          dp[t][j][l][1] += dp[1 - t][j - 1][l - 1][1];
        }
      }
      for (int l = 1; l <= j; ++l) {
        if (dp[t][j][l][0] >= LMOD) dp[t][j][l][0] %= MOD;
        if (dp[t][j][l][1] >= LMOD) dp[t][j][l][1] %= MOD;
        gp[t][j][l][0] = gp[t][j][l - 1][0] + dp[t][j][l][0];
        if (gp[t][j][l][0] >= LMOD) gp[t][j][l][0] %= MOD;
        gp[t][j][l][1] = gp[t][j][l - 1][1] + dp[t][j][l][1];
        if (gp[t][j][l][1] >= LMOD) gp[t][j][l][1] %= MOD;
      }
    }
  }
  int t = n & 1;
  for (int j = 1; j <= ck; ++j) qp[j] = (qp[j - 1] + gp[t][j][j][0]) % MOD;
  long long ans = 0;
  for (int i = 1; i <= ck; ++i)
    ans += (gp[t][i][i][0] + gp[t][i][i][1]) % MOD *
           qp[min(ck, k / i - (k % i == 0))] % MOD;
  ans %= MOD;
  printf("%lld\n", ans);
}
int main() {
  int t = 1;
  for (int ti = 1; ti <= t; ++ti) {
    test_case();
  }
}
