#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int n ;
    cin >> n;
    vector<int> input(n);
    for (int i = 0 ; i < n ; i++) {
        cin >> input[i];
    }

    vector<pair<int, int>> boxs;

    for (int i = 0 ; i < n ; i++) {
        if ( i == n - 1 ) {
            boxs.push_back({input[n - 1], input[0]});
        } else {
            boxs.push_back({input[i], input[i + 1]});
        }
    }

    for (int i = 0 ; i < n ; i++) {
        boxs.push_back(boxs[i]);
    }


    int maxSum = 0;

    for (int start = 0 ; start <= n - 1 ; start++) {

        vector<pair<int, int>> temp_boxs;
        for (int i = start ; i < start + n ; i++) {
            temp_boxs.push_back(boxs[i]);
        }

        vector<vector<int>> dp(n + 1, vector<int>(n + 1, 0));
        for (int len = 2 ; len <= n ; len++) {
            for (int i = 0 ; i + len - 1 <= n - 1 ; i++) {
                int j = i + len - 1;
                dp[i][j] = max(dp[i][j - 1] + temp_boxs[i].first * temp_boxs[j].first * temp_boxs[j].second,
                               dp[i + 1][j] + temp_boxs[i].first * temp_boxs[i].second * temp_boxs[j].second);
                 int tempMax = 0;
                 for(int k = i ; k < j ; k++){
                    tempMax = max(tempMax,dp[i][k]+ dp[k+1][j] + temp_boxs[i].first * temp_boxs[k].second * temp_boxs[j].second);
                 }

                 dp[i][j] = max(dp[i][j],tempMax);

            }
        }

        maxSum = max(maxSum , dp[0][n-1]);


    }

    cout<<maxSum<<endl;







}