#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long INFLL = 1e18;
const int MOD = 998244353;
const int MAXN = 2e5 + 5;
long long dp1[555][555];
long long f[555];
int n, k;
long long ans;
long long sq(long long x) { return x * x % MOD; }
long long powMod(long long b, long long e) {
  return e ? sq(powMod(b, e >> 1)) * (e & 1 ? b : 1) % MOD : 1;
}
void fill1(int max) {
  for (int i = 1; i < max + 1; i++) dp1[n - 1][i] = 2;
  for (int j = n - 2; j > -1; j--)
    for (int i = 0; i < max + 1; i++)
      if (i != max)
        dp1[j][i] = (dp1[j + 1][i + 1] + dp1[j + 1][1]) % MOD;
      else
        dp1[j][i] = dp1[j + 1][1] % MOD;
  f[max] = dp1[0][1] % MOD;
}
int main() {
  scanf("%d %d", &n, &k);
  k--;
  long long inv = powMod(2, MOD - 2);
  for (int i = 1; i < n + 1; i++) fill1(i);
  for (int i = 1; i < n + 1; i++)
    ans = (ans + f[min(k / i, n)] * ((f[i] - f[i - 1] + MOD) % MOD)) % MOD;
  printf("%lld\n", ans * inv % MOD);
  return 0;
}
