func_code_string: #include <bits/stdc++.h>   using namespace std;   long long n, k;   vector<long long> v;   long long dp[1001][2001][4];   long long rec(long long i, long long mask, long long comp) {     if (i == n && comp == k)       return 1;     else if (i == n)       return 0;     else if (comp > k)       return 0;     if (dp[i][comp][mask] != -1) return dp[i][comp][mask];     if (i == 0) {       return dp[i][comp][mask] =                  (rec(i + 1, 0, comp + 1) + rec(i + 1, 1, comp + 2) +                   rec(i + 1, 2, comp + 2) + rec(i + 1, 3, comp + 1)) %                  998244353;     }     if (mask == 0) {       return dp[i][comp][mask] =                  (rec(i + 1, 0, comp) + rec(i + 1, 3, comp + 1) +                   rec(i + 1, 1, comp + 1) + rec(i + 1, 2, comp + 1)) %                  998244353;     } else if (mask == 1) {       return dp[i][comp][mask] = (rec(i + 1, 0, comp) + rec(i + 1, 1, comp) +                                   rec(i + 1, 2, comp + 2) + rec(i + 1, 3, comp)) %                                  998244353;     } else if (mask == 2) {       return dp[i][comp][mask] = (rec(i + 1, 0, comp) + rec(i + 1, 1, comp + 2) +                                   rec(i + 1, 2, comp) + rec(i + 1, 3, comp)) %                                  998244353;     } else if (mask == 3) {       return dp[i][comp][mask] =                  (rec(i + 1, 0, comp + 1) + rec(i + 1, 1, comp + 1) +                   rec(i + 1, 2, comp + 1) + rec(i + 1, 3, comp)) %                  998244353;     }   }   void solve() {     memset(dp, -1, sizeof(dp));     cin >> n >> k;     cout << rec(0, 0, 0);   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     long long q = 1;     while (q--) {       v.clear();       solve();     }   }   