/*
给定一个二行n列的格子,在里面填黑白色,要求通过黑白色将格子分为k块
请问有多少种填色方式
dp[j][k][0,1,2,3]
填到第j列,有k块,第j列的颜色,
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 998244353
//0全白,1黑白,2白黑,3黑黑
ll dp[][*][],n,k;
int main(){
cin>>n>>k;
memset(dp,,sizeof dp);
dp[][][]=dp[][][]=;
dp[][][]=dp[][][]=;
for(int i=;i<=n;i++)
for(int j=;j<=k;j++){
dp[i][j][]=(dp[i-][j][]+dp[i-][j-][]+dp[i-][j][]+dp[i-][j][])%mod;
dp[i][j][]=(dp[i-][j-][]+dp[i-][j][]+dp[i-][j][]+dp[i-][j][])%mod;
dp[i][j][]=(dp[i-][j-][]+dp[i-][j-][]+dp[i-][j][]+dp[i-][j-][])%mod;
dp[i][j][]=(dp[i-][j-][]+dp[i-][j-][]+dp[i-][j-][]+dp[i-][j][])%mod;
}
printf("%lld\n",(dp[n][k][]+dp[n][k][]+dp[n][k][]+dp[n][k][])%mod);
}