#include<bits/stdc++.h>
using namespace std;
const int maxn=35;
int val[maxn],n;
int dp[maxn][maxn],root[maxn][maxn];
void in(){
freopen("jfecs.in","r",stdin);
freopen("jfecs.out","w",stdout);
scanf("%d",&n);
for (int i=1;i<=n;i++){
scanf("%d",&val[i]);
dp[i][i]=val[i];
root[i][i]=i;
}
}
void deal(){
for (int i=n;i;i--){
for (int j=i+1;j<=n;j++){
for (int k=i;k<=j;k++){
if (!dp[i][k-1]) dp[i][k-1]=1;
if (!dp[k+1][j]) dp[k+1][j]=1;
if (dp[i][j]<dp[i][k-1]*dp[k+1][j]+val[k])
dp[i][j]=dp[i][k-1]*dp[k+1][j]+val[k],root[i][j]=k;
}
}
}
}
void print(int l,int r){
if (l>r) return;
if (root[l][r]) printf("%d ",root[l][r]);
print(l,root[l][r]-1);
print(root[l][r]+1,r);
}
int main(){
in();
deal();
printf("%d\n",dp[1][n]);
print(1,n);
}