#include <bits/stdc++.h>
using namespace std;
const int MAXN = 505;
const int MOD = 998244353;
int n, k, ways[MAXN], memo[MAXN][2], t, memo2[MAXN][MAXN][2];
void add(int &a, int b) { a = (a + b) % MOD; }
int dp(int pos, bool used) {
  if (pos == n) {
    return used;
  }
  int &ret = memo[pos][used];
  if (ret != -1) {
    return ret;
  }
  ret = 0;
  for (int g = (1); g < (int)(t); g++) {
    if (pos + g <= n) {
      add(ret, dp(pos + g, used));
    }
  }
  if (pos + t <= n) {
    add(ret, dp(pos + t, true));
  }
  return ret;
}
int dp2(int pos, int times, bool last) {
  if (pos == n) {
    return 1;
  }
  int &ret = memo2[pos][times][last];
  if (ret != -1) {
    return ret;
  }
  ret = 0;
  int v = last ? t : t;
  int o = last ? t : t;
  if (v * (times + 1) < k) {
    add(ret, dp2(pos + 1, times + 1, last));
  }
  if (o < k) {
    add(ret, dp2(pos + 1, 1, !last));
  }
  return ret;
}
int main() {
  while (scanf("%d%d", &n, &k) >= 1) {
    for (t = 1; t <= n; t++) {
      memset(memo, -1, sizeof(memo));
      ways[t] = (dp(0, false)) % MOD;
    }
    int ans = 0;
    for (t = 1; t <= n; t++) {
      memset(memo2, -1, sizeof(memo2));
      ans = (ans + ((long long)ways[t] * dp2(0, 0, 0)) % MOD) % MOD;
    }
    printf("%d\n", ans);
  }
  return 0;
}
