#include <bits/stdc++.h>
using namespace std;
const long long N = 520;
const long long mod = 998244353;
long long n, k;
long long ways[N], dp[N][2];
long long CalculateForFixedEqualLength(long long pos, long long FixedLength) {
  if (pos > n) return 1;
  if (ways[pos] != -1) return ways[pos];
  long long ans = 0;
  for (long long i = pos + 1; i <= n + 1; ++i) {
    if (FixedLength * (i - pos) >= k) break;
    ans += CalculateForFixedEqualLength(i, FixedLength);
    ans %= mod;
  }
  return ways[pos] = ans;
}
long long CalculateWaysToKeepEqualLengthFixed(long long pos, long long IsItDone,
                                              long long FixedLength) {
  if (pos > n) return IsItDone;
  if (dp[pos][IsItDone] != -1) return dp[pos][IsItDone];
  long long ans = 0;
  for (long long i = 1; i <= FixedLength; ++i) {
    if (pos + i > n + 1) break;
    if (i == FixedLength)
      ans += CalculateWaysToKeepEqualLengthFixed(pos + i, 1, FixedLength);
    else
      ans +=
          CalculateWaysToKeepEqualLengthFixed(pos + i, IsItDone, FixedLength);
    ans %= mod;
  }
  return dp[pos][IsItDone] = ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n >> k;
  long long ans = 0;
  for (long long i = 1; i <= min(n, k); ++i) {
    memset(dp, -1, sizeof(dp));
    long long cr = CalculateWaysToKeepEqualLengthFixed(1, 0, i);
    memset(ways, -1, sizeof(ways));
    cr *= CalculateForFixedEqualLength(1, i);
    cr %= mod;
    cr = (cr * 2) % mod;
    ans = (ans + cr) % mod;
  }
  cout << ans << endl;
}
