1#include <iostream>
2#include <fstream>
3
4using namespace std;
5
6int m,n;
7int a[201],w[201];
8long long t[201][201];
9long long ans;
10
11void input();
12void dp();
13void output();
14
15int main(){
16 input();
17 dp();
18 output();
19 return 0;
20}
21
22void input(){
23 cin>>n;
24 m=2*n-1;
25 for(int i=1;i<=n;i++) cin>>a[i];
26 for(int i=1;i<n;i++) w[i]=a[i+1];w[n]=a[1];
27 for(int i=n+1;i<=m;i++){
28 a[i]=a[i-n];
29 w[i]=w[i-n];
30 }
31 }
32
33void dp(){
34 int temp=0;
35 int j;
36 memset(t,0,sizeof(t));
37 for(int p=1;p<n;p++)
38 for(int i=1;i<m;i++){
39 j=i+p;
40 if(j<=m){
41 for(int k=i;k<j;k++)
42 t[i][j]=max(t[i][j],t[i][k]+t[k+1][j]+a[i]*w[k]*w[j]);
43 }
44 }
45 for(int i=1;i<=n;i++) ans=max(ans,t[i][i+n-1]);
46 }
47
48void output(){
49 cout<<ans<<endl;
50 }
51
2#include <fstream>
3
4using namespace std;
5
6int m,n;
7int a[201],w[201];
8long long t[201][201];
9long long ans;
10
11void input();
12void dp();
13void output();
14
15int main(){
16 input();
17 dp();
18 output();
19 return 0;
20}
21
22void input(){
23 cin>>n;
24 m=2*n-1;
25 for(int i=1;i<=n;i++) cin>>a[i];
26 for(int i=1;i<n;i++) w[i]=a[i+1];w[n]=a[1];
27 for(int i=n+1;i<=m;i++){
28 a[i]=a[i-n];
29 w[i]=w[i-n];
30 }
31 }
32
33void dp(){
34 int temp=0;
35 int j;
36 memset(t,0,sizeof(t));
37 for(int p=1;p<n;p++)
38 for(int i=1;i<m;i++){
39 j=i+p;
40 if(j<=m){
41 for(int k=i;k<j;k++)
42 t[i][j]=max(t[i][j],t[i][k]+t[k+1][j]+a[i]*w[k]*w[j]);
43 }
44 }
45 for(int i=1;i<=n;i++) ans=max(ans,t[i][i+n-1]);
46 }
47
48void output(){
49 cout<<ans<<endl;
50 }
51