#include <bits/stdc++.h>
using namespace std;

void printPreOrder(int left, int right, vector<vector<int>>& bestRoot) {
    if (left > right) return;
    cout << bestRoot[left][right] + 1 << " ";
    printPreOrder(left, bestRoot[left][right] - 1, bestRoot);
    printPreOrder(bestRoot[left][right] + 1, right, bestRoot);
}
int main() {
    int n;
    cin >> n;
    vector<int> score(n);
    vector<vector<int>> bestScore(n, vector<int>(n, 0));
    vector<vector<int>> bestRoot(n, vector<int>(n, 0));
    for (int i = 0; i < n; i++) {
        cin >> score[i];
        bestScore[i][i] = score[i];
        bestRoot[i][i] = i;
    }

    for (int len = 2; len <= n; len++) {
        for (int i = 0; i + len - 1 < n; i++) {
            int j = i + len - 1;
            for (int r = i; r <= j; r++) {
                int leftScore = (r - 1 < i) ? 1 : bestScore[i][r - 1];
                int rightScore = (r + 1 > j) ? 1 : bestScore[r + 1][j];
                int curScore = leftScore * rightScore + score[r];
                if (curScore > bestScore[i][j]) {
                    bestScore[i][j] = curScore;
                    bestRoot[i][j] = r;
                }
            }
        }
    }
    cout << bestScore[0][n - 1] << endl;
    printPreOrder(0, n - 1, bestRoot);
    cout << endl;
    return 0;
}
// 64 位输出请用 printf("%lld")