#include <bits/stdc++.h>
using namespace std;
const int MOD = 998244353;
const int N = 500;
int dp[2][N + 5][N + 5];
int gcdExtended(int a, int b, int x, int y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return b;
  }
  int x1, y1;
  x1 = y1 = 0;
  int gcd = gcdExtended(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return gcd;
}
int modInverse(int b) {
  int x, y;
  x = y = 0;
  x = gcdExtended(b, MOD, x, y);
  if (x != 1) {
    return -1;
  }
  return (x % MOD + MOD) % MOD;
}
bool found = true;
int divMod(int a, int b) {
  a %= MOD;
  int inv = modInverse(b);
  if (inv == -1) {
    found = false;
  }
  return ((long long)inv * (long long)a) % MOD;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, k;
  cin >> n >> k;
  dp[1][1][1] = 2;
  int i, j, d;
  for (i = 1; i < n; i++) {
    int prev = i & 1;
    int next = prev ^ 1;
    memset(dp[next], 0, sizeof(dp[next]));
    for (j = 1; j <= n; j++) {
      for (d = 1; d <= n; d++) {
        (dp[next][j + 1][max(j + 1, d)] += dp[prev][j][d]) %= MOD;
        (dp[next][1][d] += dp[prev][j][d]) %= MOD;
      }
    }
  }
  vector<int> a;
  a.push_back(0);
  for (i = 1; i <= n; i++) {
    int total = 0;
    for (j = 1; j <= n; j++) {
      (total += dp[n & 1][j][i]) %= MOD;
    }
    a.push_back(total);
  }
  vector<int> sum = a;
  for (i = 1; i < sum.size(); i++) {
    (sum[i] += sum[i - 1]) %= MOD;
  }
  int ans = 0;
  for (i = 1; i <= n; i++) {
    (ans +=
     ((long long)(divMod(a[i], 2)) * (long long)(sum[min(n, (k - 1) / i)])) %
     MOD) %= MOD;
  }
  cout << ans;
  return 0;
}
