func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, a[21], b[21], dp[42][42], dp2[82][42];   int main() {     cin >> n >> m;     for (int i = 0; i < n; i++) cin >> a[i];     for (int i = 0; i < n; i++) cin >> b[i];     memset(dp, 0, sizeof(dp));     memset(dp2, 0, sizeof(dp2));     dp[0][1] = a[0 % n];     dp2[0][42] = a[0 % n];     dp2[0][40] = b[0 % n];     for (int i = 1; i < n * 2; i++) {       for (int j = 0; j <= i + 1; j++) {         if (j == i + 1)           dp[i][j] = dp[i - 1][j - 1] + a[i % n];         else if (j == 0)           dp[i][j] = dp[i - 1][j + 1] + b[i % n];         else           dp[i][j] =               min(dp[i - 1][j + 1] + b[i % n], dp[i - 1][j - 1] + a[i % n]);       }     }     for (int i = 1; i < n * 2; i++) {       for (int j = 41 - i - 1; j <= 41 + i + 1; j++) {         if (j == 41 + i + 1)           dp2[i][j] = dp2[i - 1][j - 1] + a[i % n];         else if (j == 41 - i - 1)           dp2[i][j] = dp2[i - 1][j + 1] + b[i % n];         else           dp2[i][j] =               min(dp2[i - 1][j + 1] + b[i % n], dp2[i - 1][j - 1] + a[i % n]);       }     }     cout << 1ll * (m - 2) / 2ll * dp2[2 * n - 1][41] + dp[2 * n - 1][0] << endl;     return 0;   }   