#include <bits/stdc++.h>
using namespace std;
void setup() {
  ios::sync_with_stdio(false);
  cout << fixed;
  cout << setprecision(7);
}
typedef long long int INT;
typedef unsigned long long int UINT;
typedef unsigned int uint;
typedef long double LD;
int main() {
  setup();
  INT m = 998244353;
  INT N, K;
  cin >> N >> K;
  INT sq = 1;
  for (INT i = 0; i < 2 * N - 1; i++) {
    sq = (sq * 2) % m;
  }
  if (K == N * N) {
    cout << (sq - 2) % m;
    return 0;
  }
  INT k_max = min(N + 2, K + 2);
  vector<INT> phi_n(k_max);
  for (INT k = 1; k < k_max; k++) {
    vector<INT> phi_k0(N + 1);
    vector<INT> phi_k1(N + 1);
    phi_k0[1] = 1;
    phi_k1[1] = 1;
    for (INT n = 2; n < k; n++) {
      phi_k0[n] = (phi_k0[n - 1] * 2) % m;
      phi_k1[n] = (phi_k1[n - 1] * 2) % m;
    }
    for (INT n = k; n <= N; n++) {
      for (INT i = 1; i < k; i++) {
        phi_k0[n] = (phi_k0[n] + phi_k1[n - i]) % m;
      }
      for (INT j = 1; j < k; j++) {
        phi_k1[n] = (phi_k1[n] + phi_k0[n - j]) % m;
      }
    }
    phi_n[k] = (phi_k0[N] + phi_k1[N]) % m;
  }
  INT ans = 0;
  for (INT k = 1; k <= min(K - 1, N); k++) {
    INT p = min((K - 1) / k, N);
    INT exact = (phi_n[k + 1] - phi_n[k] + m) % m;
    ans += (phi_n[p + 1] * exact) % m;
    ans = ans % m;
  }
  cout << ans / 2;
  return 0;
}
