C++
Code

# Code
```cpp []
class Solution {
public:
    long long minCost(int n, vector<vector<int>>& cost) {
        vector<vector<vector<long long int>>>dp(n+1,vector<vector<long long int>>(3,vector<long long int>(3,1e18)));
        for(int i=0;i<3;i++){
            for(int j=0;j<3;j++){
                if(i!=j)dp[0][i][j]=0;
            }
        }
        for(int i=1;i<=n/2;i++){
            for(int l=0;l<=2;l++){
                for(int r=0;r<=2;r++){
                    if(l==r)continue;
                    for(int pl=0;pl<=2;pl++){
                        for(int pr=0;pr<=2;pr++){
                            if(r==pr || pl==l || pl==pr){
                                continue;
                            }
                            dp[i][l][r]=min(dp[i][l][r],dp[i-1][pl][pr]+1ll*cost[i-1][l]+1ll*cost[n-i][r]);
                        }
                    }
                }
            }
        }
        int idx=n/2;
        long long int ans=1e18;
        for(int i=0;i<3;i++){
            for(int j=0;j<3;j++){
            // cout<<i<<" "<<j<<" "<<dp[idx][i][j]<<endl;
            ans=min(ans,dp[idx][i][j]);
        }
        }
        return ans;
    }
};
```
['C++']