func_code_string: #include <bits/stdc++.h>   using namespace std;   #pragma GCC optimize( O2 )   const int P = 998244353;   int n, k, ans;   int dp[2][510][510];   int cnt[510], pre[510];   template <typename T>   inline void read(T &x) {     T f = 1;     x = 0;     char c = getchar();     for (; !isdigit(c); c = getchar())       if (c ==  - ) f = -f;     for (; isdigit(c); c = getchar()) x = (x << 3) + (x << 1) + c -  0 ;     x *= f;   }   inline int exp_mod(int a, int n) {     int b = a, res = 1;     while (n) {       if (n & 1) res = 1ll * res * b % P;       b = 1ll * b * b % P;       n >>= 1;     }     return res;   }   int main() {     read(n);     read(k);     if (n == 1) {       printf( 0 n );       return 0;     }     dp[0][0][0] = 1;     for (int i = 0; i <= n; i++) {       int now = i & 1, nxt = now ^ 1;       for (int j = 0; j <= n; j++) {         for (int x = 0; x <= n; x++) {           dp[nxt][j][x] = 0;         }       }       for (int j = 0; j <= i; j++) {         for (int x = 0; x <= n; x++) {           dp[nxt][j + 1][max(x, j + 1)] =               (1ll * dp[nxt][j + 1][max(x, j + 1)] + dp[now][j][x]) % P;           dp[nxt][1][max(x, 1)] =               (1ll * dp[nxt][1][max(x, 1)] + dp[now][j][x]) % P;         }       }     }     for (int i = 1; i <= n; i++) {       for (int j = 1; j <= n; j++) {         cnt[i] = (1ll * cnt[i] + dp[n & 1][j][i]) % P;       }     }     for (int i = 1; i <= n; i++) pre[i] = (pre[i - 1] + cnt[i]) % P;     for (int i = 1; i <= n; i++)       ans = (ans + 1ll * cnt[i] * 1ll * pre[min(n, (k - 1) / i)]) % P;     printf( %d n , 1ll * ans * exp_mod(2, P - 2) % P);     return 0;   }   