func_code_string: #include <bits/stdc++.h>   using namespace std;   int ma[(300 + 10)][(300 + 10)], dp[(300 + 10)][(300 + 10)][(300 + 10) << 1];   int main() {     int n;     cin >> n;     for (int i = 1; i <= n; i++)       for (int j = 1; j <= n; j++) cin >> ma[i][j];     for (int i = 1; i <= n; i++)       for (int j = 1; j <= n; j++)         for (int k = 0; k <= n + n; k++) dp[i][j][k] = -11111111;     dp[1][1][0] = ma[1][1];     int num = 2 * n - 2;     for (int i = 0; i < num; i++) {       for (int j = 1; j <= min(n, i + 1); j++) {         for (int k = 1; k <= min(n, i + 1); k++) {           if ((j + 1 <= n) && (k + 1 <= n) && (i + 2 - k <= n) &&               (i + 2 - j <= n) && (i + 2 - k >= 1) && (i + 2 - j >= 1)) {             if (j >= n || k >= n) continue;             int add = ma[j + 1][i + 2 - j] + (j == k ? 0 : ma[k + 1][i + 2 - k]);             dp[j + 1][k + 1][i + 1] =                 max(dp[j + 1][k + 1][i + 1], dp[j][k][i] + add);           }           if ((j + 1 <= n) && (i + 3 - k <= n) && (i + 2 - j <= n) &&               (i + 3 - k >= 1) && (i + 2 - j >= 1)) {             int add =                 ma[j + 1][i + 2 - j] + (((j + 1 != k) || (i + 2 - j != i + 3 - k))                                             ? ma[k][i + 3 - k]                                             : 0);             dp[j + 1][k][i + 1] = max(dp[j + 1][k][i + 1], dp[j][k][i] + add);           }           if ((i + 3 - j <= n) && (k + 1 <= n) && (i + 3 - j >= 1) &&               (i + 2 - k >= 1) && (i + 2 - k <= n)) {             int add =                 ma[j][i + 3 - j] + (((j != k + 1) || (i + 3 - j != i + 2 - k))                                         ? ma[k + 1][i + 2 - k]                                         : 0);             dp[j][k + 1][i + 1] = max(dp[j][k + 1][i + 1], dp[j][k][i] + add);           }           if ((i + 3 - j <= n) && (i + 3 - k <= n) && (i + 3 - j >= 1) &&               (i + 3 - k >= 1)) {             int add = ma[j][i + 3 - j] + (j == k ? 0 : ma[k][i + 3 - k]);             dp[j][k][i + 1] = max(dp[j][k][i + 1], dp[j][k][i] + add);           }         }       }     }     cout << dp[n][n][num];     return 0;   }   