#include <bits/stdc++.h>
using namespace std;
struct P {
  int x, y, z;
  bool operator<(const P &a) const { return x > a.x; }
};
int a, c, i, b, n, m, k, d;
int o[555];
int l[501][501][2];
int dx[10] = {-1, 0, 1, 0, 1, 1, -1, -1}, dy[10] = {0, 1, 0, -1, 1, -1, 1, -1},
    dz[10] = {0, 0, 0, 0, 1, -1};
long long x, y, mod = 998244353, mod2 = 1000000009, mod3 = 2017;
long long z;
double pi = 3.14159265;
P u[1];
bool as(P a, P b) { return a.x < b.x; }
int f(int n, int m, int i) {
  if (n == 0 && i) return 1;
  if (n == 0) return 0;
  if (l[n][m][i] >= 0) return l[n][m][i];
  l[n][m][i] = 0;
  for (int t = 1; t <= min(n, m); t++)
    if (t < m)
      l[n][m][i] += f(n - t, m, i), l[n][m][i] %= mod;
    else
      l[n][m][i] += f(n - t, m, 1), l[n][m][i] %= mod;
  return l[n][m][i];
}
int main() {
  memset(l, -1, sizeof(l));
  scanf("%d %d", &a, &b);
  for (int t = 1; t <= a; t++) {
    o[t] = f(a, t, 0);
    printf("%d %d\n", t, o[t]);
  }
  for (int t = 1; t <= a; t++) {
    for (int h = 1; h <= a && h * t < b; h++) x += (long long)o[h] * o[t] % mod;
    x %= mod;
  }
  z = 2;
  y = 1;
  printf("%lld", x * 2 % mod);
}
