func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = 1e9 + 1;   const double pi = acos(-1);   int dp[1001][2002][4];   int MOD = 998244353;   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.precision(20);     int n, k;     cin >> n >> k;     dp[0][0][0] = 1;     dp[0][0][1] = 1;     dp[0][0][2] = 1;     dp[0][0][3] = 1;     for (int i = 1; i < n; ++i) {       for (int j = 0; j <= k; ++j) {         dp[i][j][0] = (dp[i][j][0] + dp[i - 1][j][0]) % MOD;         dp[i][j][1] = (dp[i][j][1] + dp[i - 1][j][0]) % MOD;         dp[i][j][2] = (dp[i][j][2] + dp[i - 1][j][0]) % MOD;         dp[i][j + 1][3] = (dp[i][j + 1][3] + dp[i - 1][j][0]) % MOD;         dp[i][j + 1][0] = (dp[i][j + 1][0] + dp[i - 1][j][1]) % MOD;         dp[i][j][1] = (dp[i][j][1] + dp[i - 1][j][1]) % MOD;         dp[i][j + 2][2] = (dp[i][j + 2][2] + dp[i - 1][j][1]) % MOD;         dp[i][j + 1][3] = (dp[i][j + 1][3] + dp[i - 1][j][1]) % MOD;         dp[i][j + 1][0] = (dp[i][j + 1][0] + dp[i - 1][j][2]) % MOD;         dp[i][j + 2][1] = (dp[i][j + 2][1] + dp[i - 1][j][2]) % MOD;         dp[i][j][2] = (dp[i][j][2] + dp[i - 1][j][2]) % MOD;         dp[i][j + 1][3] = (dp[i][j + 1][3] + dp[i - 1][j][2]) % MOD;         dp[i][j + 1][0] = (dp[i][j + 1][0] + dp[i - 1][j][3]) % MOD;         dp[i][j][1] = (dp[i][j][1] + dp[i - 1][j][3]) % MOD;         dp[i][j][2] = (dp[i][j][2] + dp[i - 1][j][3]) % MOD;         dp[i][j][3] = (dp[i][j][3] + dp[i - 1][j][3]) % MOD;       }     }     int ans = 0;     ans = (ans + dp[n - 1][k - 1][0]) % MOD;     if (k > 1) {       ans = (ans + dp[n - 1][k - 2][1]) % MOD;       ans = (ans + dp[n - 1][k - 2][2]) % MOD;     }     ans = (ans + dp[n - 1][k - 1][3]) % MOD;     cout << ans << endl;     return 0;   }   