#include <bits/stdc++.h>
using namespace std;
namespace IO {
const int ios = 1 << 17;
char R[ios], P[ios], *Rc = R, *RB = R, *Pc = P;
const char* PB = P + ios;
int stk[50], tp = 0, pass;
inline void flush() {
  fwrite(P, 1, Pc - P, stdout);
  Pc = P;
}
inline int gec() {
  return (Rc == RB && (RB = (Rc = R) + fread(R, 1, ios, stdin), Rc == RB))
             ? EOF
             : *Rc++;
}
inline void puc(const char& c) {
  if (Pc == PB) flush();
  *(Pc++) = c;
}
template <typename Tp>
inline int read(Tp& A) {
  static int c, sg;
  c = gec();
  sg = 0;
  A = 0;
  while (!isdigit(c) && c != EOF) sg |= (c == '-'), c = gec();
  if (c == EOF) return EOF;
  while (isdigit(c)) A = (A << 3) + (A << 1) + (c ^ '0'), c = gec();
  return A = sg ? -A : A, 0;
}
inline int read() { return read(pass), pass; }
template <typename Tp>
inline void print(Tp A) {
  if (A < 0) puc('-');
  if (!A) puc('0');
  for (int Q, P; A; A = Q) Q = A / 10, P = A - 10 * Q, stk[++tp] = P ^ '0';
  while (stk[tp]) puc(stk[tp--]);
}
}  // namespace IO
using IO::flush;
using IO::gec;
using IO::print;
using IO::puc;
using IO::read;
const int N = 1e3 + 10, P = 998244353;
int f[N][N], total, re[N], T, n;
int main() {
  read(n);
  read(T);
  f[0][0] = 1;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= i; j++)
      for (int k = 1; k <= j; k++) (f[i][j] += f[i - k][min(j, i - k)]) %= P;
  for (int i = 1; i <= n; i++) re[i] = (f[n][i] - f[n][i - 1] + P) % P;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (i * j < T) (total += (1ll * re[i] * re[j] % P)) %= P;
  printf("%d", (total << 1) % P);
  return flush(), 0;
}
