func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long N = 2e3 + 3;   long long n, mod = 1e9 + 7, dp[N][N][2];   long long f(long long idx, long long diff, long long stat) {     long long &ret = dp[idx][diff][stat];     if (ret != -1) return ret;     if (idx == n) {       ret = 0;       return ret;     }     ret = 0;     if (stat == 0) {       if (n - idx - 1 >= diff + 1) {         ret =             (f(idx + 1, diff + 1, 0) + (diff > 0 ? f(idx + 1, diff - 1, 0) : 0)) %             mod;         ret = max(ret, (f(idx + 1, diff + 1, 1) + 1 +                         (diff > 0 ? f(idx + 1, diff - 1, 0) : 0)) %                            mod);         ret = max(ret, (f(idx + 1, diff + 1, 0) +                         (diff > 0 ? 1 + f(idx + 1, diff - 1, 1) : 0)) %                            mod);       } else {         if (diff > 0)           ret = max(f(idx + 1, diff - 1, 0), 1 + f(idx + 1, diff - 1, 1));         else           ret = 0;       }     } else {       if (n - idx - 1 >= diff + 1) {         ret =             (f(idx + 1, diff + 1, 0) + (diff > 0 ? f(idx + 1, diff - 1, 0) : 0)) %             mod;       } else {         if (diff > 0)           ret = f(idx + 1, diff - 1, 0);         else           ret = 0;       }     }     return ret;   }   int main() {     cin >> n;     n *= 2;     for (long long i = 0; i <= n; i++)       for (long long ii = 0; ii <= n; ii++)         for (long long iii = 0; iii < 2; iii++) dp[i][ii][iii] = -1;     cout << f(0, 0, 0) <<   n ;     return 0;   }   