#include<bits/stdc++.h>
using namespace std;#definedbdouble#definelllonglong#definePirpair<int,int>#definefifirst#definesesecond#definepbpush_back#definem_pmake_pair#defineinf0x3f3f3f3f#defineINF0x3f3f3f3f3f3f3f3f/*==========ACMer===========*/constint N =100;int n, a[N];int f[N][N];int path[N][N];voiddfs(int l,int r){if(l > r)return;if(l == r){printf("%d ", l);return;}printf("%d ", path[l][r]);dfs(l, path[l][r]-1);dfs(path[l][r]+1, r);}intmain(){scanf("%d",&n);for(int i =1; i <= n; i ++){scanf("%d",&a[i]);
f[i][i]= a[i];}for(int k =2; k <= n; k ++){for(int i =1; i <= n - k +1; i ++){int j = i + k -1;for(int md = i; md <= j; md ++){int L =max(f[i][md -1],1);int R =max(f[md +1][j],1);if(f[i][j]< L * R + a[md]){
f[i][j]= L * R + a[md];
path[i][j]= md;}}}}printf("%d\n", f[1][n]);dfs(1, n);return0;}