import java.io.*;
import java.util.*;

public class Sol {

    static int mod = 998244353;
    static int dp[][];
    static int dp2[][][];
    static int[] ans;
    public static void main(String[] args) throws Throwable {
        MyScanner sc = new MyScanner();
        PrintWriter pw = new PrintWriter(System.out);

        n = sc.nextInt();
        k = sc.nextInt();
        int [] ans2 = new int[n+1];

        ans = new int[n+1];
        for (int max = 1; max <= n; max++) {
            dp = new int[n][max+1];
            for (int i = 0; i < n; i++)
                Arrays.fill(dp[i], -1);
            ans2[max] = solve(1, 1, max);
        }


        for (int max = 1; max <= n; max++) {
            dp2 = new int[2][n][max+1];
            for (int i = 0; i < dp2.length; i++)
                for (int j = 0; j < dp2[i].length; j++) {
                    Arrays.fill(dp2[i][j], -1);
                }
            ans[max] = solve2(0, 0, 0, max);
        }


        long res = 0;
        for (int i = 1; i < ans.length; i++) {
            int rem = Math.min(n, (k-1)/i);
            res = (res + (1l*ans[i]*ans2[rem])%mod)%mod;
        }

        pw.println(res);


        pw.flush();
        pw.close();
    }

    static int add(int a, int b){
        int ans = a+b;
        if(ans >= mod)
            ans -= mod;
        return ans;
    }

    static int n;
    static int k;
    static int solve(int idx, int consec, int max){
        if(idx == n)
            return 1;
        if(dp[idx][consec] != -1)
            return dp[idx][consec];
        if(consec == max)
            return dp[idx][consec] = solve(idx+1, 1, max);
        return dp[idx][consec] = add(solve(idx+1, 1, max), solve(idx+1, consec+1, max));
    }

    static int solve2(int idx, int consec, int done, int max){
        if(consec == max)
            done = 1;
        if(idx == n)
            return done;
        if(dp2[done][idx][consec] != -1)
            return dp2[done][idx][consec];
        if(consec == max)
            return dp2[done][idx][consec] = solve2(idx+1, 1, done, max);
        return dp2[done][idx][consec] = add(solve2(idx+1, 1, done, max), solve2(idx+1, consec+1, done, max));
    }



    static class MyScanner {
        BufferedReader br;
        StringTokenizer st;

        public MyScanner() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
    }
}