#include<cstdio>
#include<algorithm>
using namespace std;
int dp[305][305]={},jojo[305][305];
int t,kk;
int a[305];
void DFS(int x,int y,int toto){
if(x>=y)
return ;
if(toto==kk){
printf("%d ",jojo[x][y]);
t=1;
return ;
}
DFS(x,jojo[x][y],toto+1);
DFS(jojo[x][y]+1,y,toto+1);
}
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=n-1;i>0;i--){
for(int j=i+1;j<=n;j++){
for(int k=i;k<j;k++){
if(dp[i][j]<dp[i][k]+dp[k+1][j]+(a[i]+a[j])*a[k]){
dp[i][j]=dp[i][k]+dp[k+1][j]+(a[i]+a[j])*a[k];
jojo[i][j]=k;
}
}
}
}
printf("%d\n",dp[1][n]);
t=1;
while(t){
t=0;
kk++;
DFS(1,n,1);
}
return 0;
}