#include <bits/stdc++.h>
using namespace std;
const int N = int(1e5) + 3;
const int MOD = 998244353;
const double PI = 4 * atan(1);
const double eps = 1e-10;
const long long oo = 1e10;
const int K = 26;
long long mul(long long u, long long v, long long mod = MOD) {
  return ((u % mod) * (v % mod)) % mod;
}
long long add(long long u, long long v, long long mod = MOD) {
  return ((u % mod) + (v % mod) + mod) % mod;
}
long long sub(long long u, long long v, long long mod = MOD) {
  return ((u % mod) - (v % mod) + mod) % mod;
}
long long powe(long long u, long long v, long long mod = MOD) {
  long long ans = 1;
  long long acc = u;
  while (v) {
    if (v % 2) {
      ans = mul(ans, acc, mod);
    }
    acc = mul(acc, acc, mod);
    v /= 2;
  }
  return ans;
}
int dp[505][505];
int n, k;
int po[505];
int solve(int cur, int p) {
  if (cur == 0) {
    return 1;
  }
  if (dp[cur][p] != -1) return dp[cur][p];
  long long res = 0;
  for (int i = 1; i <= (cur < p ? cur : p); i++) {
    res = add(res, solve(cur - i, p));
  }
  return dp[cur][p] = res;
}
int main() {
  freopen("easy", "r", stdin);
  cin >> n >> k;
  for (int i = 0; i <= 505; i++) {
    solve(n, i);
  }
  long long ans = 0;
  for (int i = 1; i <= (k < n ? k : n); i++) {
    for (int j = 1; j <= ((k / i) < n ? (k / i) : n); j++) {
      if (i * j >= k) continue;
      long long x = sub(dp[n][i], dp[n][i - 1]);
      long long y = sub(dp[n][j], dp[n][j - 1]);
      ans = add(ans, mul(2, mul(x, y)));
    }
  }
  cout << ans << endl;
  return 0;
}
