#include<iostream>
using namespace std;
int N , head[ 102 ] , tail[ 102 ];
long long dp[ 102 ][ 102 ];
int main() {
cin >> N;
int i , j;
for( i = 1 ; i <= N ; i ++ ) cin >> head[ i ];
for( i = 1 ; i < N ; i ++ ) tail[ i ] = head[ i + 1 ];
tail[ N ] = head[ 1 ];
int step;
for( i = 1 ; i <= N ; i ++ ) dp[ i ][ 0 ] = 0;
for( step = 1 ; step < N ; step ++ ) {
for( i = 1 ; i <= N ; i ++ ) {
int t3 = i + step - 1;
int t4 = i + step;
if( t4 > N ) t4 = t4 - N;
if( t3 > N ) t3 = t3 - N;
dp[ i ][ step ] = dp[ i ][ step - 1 ] + head[ i ] * tail[ t3 ] * tail[ t4 ];
for( j = 0 ; j < step ; j ++ ) {
int t1 = i + j + ;
int t2 = i + step;
int t5 = i + j + 1;
if( t1 > N ) t1 = t1 - N;
if( t2 > N ) t2 = t2 - N;
if( t5 > N ) t5 = t5 - N;
if( dp[ i ][ step ] < dp[ i ][ j ] + dp[ t5 ][ step - j - 1 ] + head[ i ] * tail[ t1 ] * tail[ t2 ] ) {
dp[ i ][ step ] = dp[ i ][ j ] + dp[ t5 ][ step - j - 1 ] + head[ i ] * tail[ t1 ] * tail[ t2 ];
}
}
}
}
long long result = 0;
for( i = 1 ; i <= N ; i ++ ) {
if( dp[ i ][ N - 1 ] > result ) result = dp[ i ][ N - 1 ];
}
cout << result << endl;
}