10 int a
[maxn
],f
[maxn
][maxn
];
12 int max(int p
, int q
) {
16 int query(int l
, int r
) {
17 if (f
[l
][r
]) return f
[l
][r
];
20 for (k
=l
+1; k
<=r
-1; k
++) {
23 f
[l
][r
]=max(f
[l
][r
],f
[l
][k
]+f
[k
][r
]+a
[l
]*a
[k
]*a
[r
]);
32 for (i
=1; i
<=n
; i
++) {
37 for (i
=1; i
<=n
; i
++) ans
=max(ans
,query(i
,i
+n
));