func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long mod = 998244353;   long long dp[1001][2001][4];   long long solve(long long n, long long k, long long i) {     if (dp[n][k][i] != -1) {       return dp[n][k][i];     }     if (k < 1 || k > 2 * n) return 0;     if (i == 0) {       dp[n][k][i] = solve(n - 1, k, 0) + solve(n - 1, k - 1, 1) +                     solve(n - 1, k - 1, 2) + solve(n - 1, k - 2, 3);     } else if (i == 1) {       dp[n][k][i] = solve(n - 1, k, 0) + solve(n - 1, k, 1) +                     solve(n - 1, k - 1, 2) + solve(n - 1, k, 3);     } else if (i == 2) {       dp[n][k][i] = solve(n - 1, k, 0) + solve(n - 1, k - 1, 1) +                     solve(n - 1, k, 2) + solve(n - 1, k, 3);     } else {       dp[n][k][i] = solve(n - 1, k - 2, 0) + solve(n - 1, k - 1, 1) +                     solve(n - 1, k - 1, 2) + solve(n - 1, k, 3);     }     dp[n][k][i] %= mod;     return dp[n][k][i];   }   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     memset(dp, -1, sizeof dp);     long long n, k;     cin >> n >> k;     dp[1][1][0] = dp[1][1][3] = 0;     dp[1][1][1] = dp[1][1][2] = 1;     dp[1][2][0] = dp[1][2][3] = 1;     dp[1][2][1] = dp[1][2][2] = 0;     cout << (solve(n, k, 0) + solve(n, k, 1) + solve(n, k, 2) + solve(n, k, 3)) %                 mod          << endl;   }   