func_code_string: #include <bits/stdc++.h>   using namespace std;   void _exit(string message) {     if (message !=   ) cout << message << endl;     exit(0);   }   template <typename T>   ostream &operator<<(ostream &out, const vector<T> &V) {     if (!V.empty()) {       out <<  [ ;       for (auto v : V) out << v <<  ,  ;       out <<   b b] ;     } else       out <<  [] ;     return out;   }   int main() {     ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);     long long n, k, q = 998244353;     cin >> n >> k;     long long m = min(n + 1, k);     vector<vector<int> > T(n + 1, vector<int>(m, 0));     vector<vector<int> > PT(n + 1, vector<int>(m, 0));     for (int j = 1; j < m; j++) PT[0][j] = T[0][j] = 2;     T[1][1] = 2;     for (int j = 1; j < m; j++) PT[1][j] = 2;     for (int i = 2; i <= n; i++) PT[i][1] = T[i][1] = 2;     for (int i = 2; i <= n; i++) {       for (int j = 2; j < m; j++) {         T[i][j] = (2 * T[i - 1][j]) % q;         if (i >= j + 1) T[i][j] -= PT[i - 1 - j][j];         if (i >= j) T[i][j] += PT[i - j][j - 1];         if (T[i][j] < 0) T[i][j] += q;         if (T[i][j] >= q) T[i][j] = T[i][j] % q;         PT[i][j] = PT[i][j - 1] + T[i][j];         if (PT[i][j] >= q) PT[i][j] = PT[i][j] % q;       }     }     for (int j = 0; j < m; j++) PT[0][j] = T[0][j] = 0;     long long ans = 0;     for (int i = 1; i < m; i++)       ans +=           ((1ll * T[n][i] * PT[n][min(m - 1, (k - 1) / i)]) % q * (q + 1) / 2) %           q;     cout << ans % q << endl;     return 0;   }   