#include <bits/stdc++.h>
const long long Inf = 1e18;
const long double eps = 1e-7;
long long LINF = (long long)2e18;
using namespace std;
long long mod = 1e9 + 7;
long long mod5 = 1e9 + 9;
long long mod3 = 998244353;
long long mod4 = 1000003;
long long mod2 = 1e9 + 123;
const int MAXN = 301000;
const int INF = 1000000000;
int n, k;
int dp1[501][501][2];
int dp2[501][501];
int rec1(int pos, int cnt, int mx_flag, int &mx) {
  if (pos == n) {
    if (cnt == 0 || mx_flag == 1)
      return 1;
    else
      return 0;
  }
  if (dp1[pos][cnt][mx_flag] != -1) return dp1[pos][cnt][mx_flag];
  long long ans = rec1(pos + 1, mx - 1, mx_flag, mx);
  if (cnt > 0) {
    if (cnt == 1)
      ans += rec1(pos + 1, 0, 1, mx);
    else
      ans += rec1(pos + 1, cnt - 1, mx_flag, mx);
  }
  ans %= mod3;
  return dp1[pos][cnt][mx_flag] = ans;
}
int rec2(int r, int cnt, int &mx) {
  if (r == n) return 1;
  if (dp2[r][cnt] != -1) return dp2[r][cnt];
  long long ans = rec2(r + 1, mx - 1, mx);
  if (cnt > 0) {
    ans += rec2(r + 1, cnt - 1, mx);
  }
  ans %= mod3;
  return dp2[r][cnt] = ans;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout.setf(ios::fixed);
  cout.precision(20);
  cin >> n >> k;
  int ans = 0;
  for (int(i) = 1; (i) < min(n, k - 1) + 1; (i)++) {
    memset(dp1, -1, sizeof(dp1));
    memset(dp2, -1, sizeof(dp2));
    int cnt = rec1(0, i, 0, i);
    int mx_row = (k - 1) / i;
    int kek = rec2(1, mx_row - 1, mx_row);
    ans += ((long long)kek * (long long)cnt) % mod3;
    ans %= mod3;
  }
  cout << ans;
  return 0;
}
