You are given a grid, consisting of 2 rows and n columns. Each cell of this grid should be colored either black or white.

Two cells are considered neighbours if they have a common border and share the same color. Two cells A and B belong to the same component if they are neighbours, or if there is a neighbour of A that belongs to the same component with B.

Let's call some bicoloring beautiful if it has exactly k components.

Count the number of beautiful bicolorings. The number can be big enough, so print the answer modulo 998244353.

Input

The only line contains two integers n and k (1 ≤ n ≤ 1000, 1 ≤ k ≤ 2n) — the number of columns in a grid and the number of components required.

Output

Print a single integer — the number of beautiful bicolorings modulo 998244353.

Examples

Input

3 4


Output

12


Input

4 1


Output

2


Input

1 2


Output

2

Note

One of possible bicolorings in sample 1:

<image>
import java.util.*;
import java.io.*;

public class Main
{
	public static void main(String[] args)
	{
		FastReader reader = new FastReader();
		PrintWriter writer = new PrintWriter(System.out);

		long mod = 998244353;

		int n = reader.nextInt();
		int x = reader.nextInt();

		long[][][] dp = new long[n][4][2*n+10];
		dp[0][0][1] = 1;
		dp[0][1][2] = 1;
		dp[0][2][2] = 1;
		dp[0][3][1] = 1;

		for (int i=1; i<n; i++)
			for (int l=1; l<=2*n; l++)
				for (int j=0; j<4; j+=3)
				{
					dp[i][j][l] += dp[i-1][j][l] + dp[i-1][1][l] + dp[i-1][2][l];
					dp[i][j][l] %= mod;

					dp[i][j][l+1] += dp[i-1][j^3][l];
					dp[i][j][l+1] %= mod;
				

					dp[i][j^1][l] += dp[i-1][j^1][l];
					dp[i][j^1][l] %= mod;

					dp[i][j^1][l+1] += dp[i-1][0][l] + dp[i-1][3][l];
					dp[i][j^1][l+1] %= mod;

					dp[i][j^1][l+2] += dp[i-1][j^2][l];
					dp[i][j^1][l+2] %= mod;
				}

		long sum = 0;
		for (int i=0; i<4; i++)
			sum += dp[n-1][i][x];			

		writer.print(sum%mod);
		writer.close();
	}

	static class FastReader
	{
		BufferedReader br;
		StringTokenizer st;

		public FastReader()
		{
			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;
		}
	}
}