#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long sum = 0, ff = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') ff = -1;
    ch = getchar();
  }
  while (isdigit(ch)) sum = sum * 10 + (ch ^ 48), ch = getchar();
  return sum * ff;
}
const long long N = 505;
const long long mod = 998244353;
long long n, m, f[2][N][N], gs[N];
signed main() {
  n = read();
  m = read();
  if (m > n * n || !m) return printf("0\n"), 0;
  long long op = 1, las = 0;
  f[0][0][0] = 1;
  for (long long i = 0; i < n; i++) {
    las = i & 1;
    op = (i & 1) ^ 1;
    memset(f[op], 0, sizeof(f[op]));
    for (long long j = 0; j <= n; j++)
      for (long long k = 0; k <= n; k++) {
        f[op][j + 1][max(k, j + 1)] =
            (f[op][j + 1][max(k, j + 1)] + f[las][j][k]) % mod;
        f[op][1][max(1ll, k)] = (f[op][1][max(1ll, k)] + f[las][j][k]) % mod;
      }
  }
  for (long long i = 0; i <= n; i++)
    for (long long j = 0; j <= n; j++) gs[i] = (gs[i] + f[n & 1][j][i]) % mod;
  long long ans = 0;
  for (long long i = 1; i <= n; i++)
    for (long long j = 1; j <= n; j++)
      if (j * i <= m) ans = (ans + gs[i] * gs[j] % mod + mod) % mod;
  ans = ((ans + 1) / 2 + mod) % mod;
  printf("%lld\n", ans);
  return 0;
}
