import java.util.Scanner;

public class E {

	private static long MOD = 998244353;
	
	private static long[][] cache;
	private static long dp(int n, int x, int idx, int used) {
		// impossible
		if (used == 0 && idx + x > n) {
			return 0;
		}
		// base case
		if (idx == n) {
			return used;
		}
		// seen before
		if (cache[idx][used] > -1) {
			return cache[idx][used];
		}
		// recursive case
		long ans = 0;
		for (int diff = 1; diff <= x && idx + diff <= n; ++diff) {
			int nextUsed = used;
			if (diff == x)
				nextUsed = 1;
			ans += dp(n, x, idx + diff, nextUsed);
			ans %= MOD;
		}
		return cache[idx][used] = ans;
	}
	
	private static long[] cacheF;
	private static long f(int n, int x) {
		if (x <= 0 || x > n)
			return 0;
		if (cacheF[x] != -1)
			return cacheF[x];
		cache = new long[n][2];
		for (int i = 0; i < cache.length; ++i)
			for (int j = 0; j < cache[i].length; ++j)
				cache[i][j] = -1;
		return cacheF[x] = dp(n, x, 0, 0);
	}
	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int k = in.nextInt() - 1;
		cacheF = new long[n + 1];
		for (int i = 0; i < cacheF.length; ++i)
			cacheF[i] = -1L;
		long ans = 0;
		for (int i = 1; i <= k && i <= n; ++i) {
			for (int j = 1; j <= k/i; ++j) {
				ans += 2*f(n, i)*f(n, j);
				ans %= MOD;
			}
		}
		System.out.println(ans);
	}

}
