rt
#include <bits/stdc++.h>
using namespace std;
unsigned long long f[31][31];
int n,t[31][31];
void coutq(int x,int y)
{
cout<<t[x][y]<<" ";
if(t[x][y]-1>=x)
coutq(x,t[x][y]-1);
if(t[x][y]+1<=y)
coutq(t[x][y]+1,y);
return;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
f[i][j]=1;
for(int i=1;i<=n;i++)
t[i][i]=i;
for(int i=1;i<=n;i++)
cin>>f[i][i];
for(int l=2;l<=n;l++)
for(int i=1;i+l-1<=n;i++)
for(int j=i;j<=i+l-1;j++)
if(f[i][i+l-1]<=f[i][j-1]*f[j+1][i+l-1]+f[j][j])
{
//cout<<f[i][i+l-1]<<endl;
f[i][i+l-1]=f[i][j-1]*f[j+1][i+l-1]+f[j][j];
t[i][i+l-1]=j;
}
/*for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
cout<<f[i][j]<<" ";
cout<<endl;
}*/
cout<<f[1][n]<<endl;
coutq(1,n);
return 0;
}