#include <bits/stdc++.h>
using namespace std;
const int maxn = 500 + 10;
const int mod = 998244353;
long long memo[maxn][maxn], N, K;
long long dp(int n, int k) {
  for (int i = 0; i < maxn; i++)
    for (int j = 0; j < maxn; j++) memo[i][j] = 0;
  int cnt = 1;
  for (int i = n - 1; i >= 0; i--) {
    if (cnt > k) break;
    memo[n][i] = 1;
    cnt++;
  }
  for (int i = n - 1; i >= 1; i--) {
    cnt = 1;
    for (int j = i - 1; j >= 0; j--) {
      if (cnt > k) break;
      memo[i][j] += memo[i + 1][j];
      memo[i][j] %= mod;
      memo[i][j] += memo[i + 1][i];
      memo[i][j] %= mod;
      cnt++;
    }
  }
  long long res = (2ll) * memo[1][0];
  res %= mod;
  if (res < 0) res += mod;
  return res;
}
long long extEuclides(long long a, long long b, long long &x, long long &y,
                      long long mod = 0) {
  if (!b) {
    x = 1, y = 0;
    return a;
  }
  long long gcd = extEuclides(b, a % b, x, y, mod);
  x = !mod ? x - y * (a / b) : (mod + x - (y * (a / b)) % mod) % mod;
  swap(x, y);
  return gcd;
}
long long modInverse(long long a, long long m) {
  long long x, y;
  long long g = extEuclides(a, m, x, y, m);
  if (g != 1) return -1;
  return (x % m + m) % m;
}
long long modDivide(long long a, long long b, long long m) {
  a %= m;
  long long inv = modInverse(b, m);
  if (inv == -1) return -1;
  return (inv * a) % m;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> N >> K;
  long long res = 0;
  long long ant = 0;
  for (int i = 1; i < N + 1; i++) {
    if (i >= K) break;
    long long a = dp(N, i);
    long long p1 = ((a % mod) - (ant % mod)) % mod;
    long long times = K / i;
    if (times * i >= K) times--;
    times = min(times, N);
    long long p2 = times ? dp(N, times) : 0;
    long long act = ((p1 % mod) * (p2 % mod)) % mod;
    res += act;
    res %= mod;
    ant = a;
  }
  res = modDivide(res, 2, mod);
  if (res < 0) res += mod;
  cout << res << '\n';
  return 0;
}
