#include <bits/stdc++.h>
using namespace std;
clock_t start;
mt19937_64 rng(chrono::system_clock::now().time_since_epoch().count());
template <typename T>
void _F(const char *name, T arg1) {
  cerr << name << " = " << arg1 << '\n';
}
template <typename T, typename... Args>
void _F(const char *names, T arg1, Args... args) {
  const char *name = strchr(names, ',');
  cerr.write(names, name - names) << " = " << arg1 << '\n';
  _F(name + 2, args...);
}
template <typename T1, typename T2>
istream &operator>>(istream &in, pair<T1, T2> &q) {
  in >> q.first >> q.second;
  return in;
}
template <typename T1, typename T2>
ostream &operator<<(ostream &out, pair<T1, T2> &q) {
  out << q.first << " " << q.second;
  return out;
}
template <typename T1, typename T2>
pair<T1, T2> operator+(pair<T1, T2> p1, pair<T1, T2> p2) {
  return {p1.first + p2.first, p1.second + p2.second};
}
template <typename T1, typename T2>
pair<T1, T2> operator-(pair<T1, T2> p1, pair<T1, T2> p2) {
  return {p1.first - p2.first, p1.second - p2.second};
}
const long long MOD = 998244353;
void solve() {
  long long n, k;
  cin >> n >> k;
  long long dp[2][n + 1][n + 1];
  memset(dp, 0, sizeof(dp));
  for (long long len = 1; len <= n; len++) {
    dp[1][0][len] = 1;
    dp[0][0][len] = 1;
    for (long long i = 1; i <= n; i++) {
      for (long long j = 1; j <= min(i, len); j++) {
        dp[1][i][len] = (dp[1][i][len] + dp[0][i - j][len]) % MOD;
        dp[0][i][len] = (dp[0][i][len] + dp[1][i - j][len]) % MOD;
      }
    }
  }
  k--;
  long long cnt[n + 1];
  for (long long i = 1; i <= n; i++) {
    cnt[i] = (dp[0][n][i] - dp[0][n][i - 1] + MOD) % MOD;
  }
  long long ans = 0;
  for (long long i = 1; i <= n; i++) {
    ans = (ans + cnt[i] * dp[0][n][min(k / i, n)]) % MOD;
  }
  cout << ans * 2 % MOD << '\n';
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long t = 1;
  start = clock();
  cout << fixed << setprecision(12);
  for (long long i = 1; i <= t; ++i) {
    solve();
  }
  return 0;
}
