code:
#include <bits/stdc++.h>
using namespace std;
const int N = 31;
int n, a[N], b[N], sum[N], r[N], ans;
void input()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> b[i];
a[i] = i;
}
}
void init()
{
for (int i = 1; i <= n; i++)
sum[i] = b[i];
}
int dfs(int root)
{
init();
int l = 0, r = 0;
for (int i = 1; i < n; i++)
if (i == root)
continue;
else
{
int tmp1 = i, tmp2 = i + 1;
if (tmp2 == root)
tmp2++;
int dtmp1 = dfs(tmp1), dl = dfs(l), dtmp2 = dfs(tmp2), dr = dfs(r);
if (dtmp1 > dl)
{
l = tmp1;
sum[l] = a[l];
}
if (dtmp2 > dr)
{
r = tmp2;
sum[r] = a[r];
}
}
return dfs(l) * dfs(r) + sum[root];
}
void update()
{
for (int i = 1; i <= n; i++)
r[i] = sum[i];
}
void solve()
{
for (int i = 1; i <= n; i++)
{
int tmp = dfs(i);
if (tmp > ans)
{
ans = tmp;
update();
}
}
}
void output()
{
cout << ans << endl;
for (int i = 1; i <= n; i++)
cout << r[i] << ' ';
}
signed main()
{
input();
if (n == 1)
cout << 1 << endl << b[1];
else if (n == 2)
cout << b[1] + b[2] << endl << a[1] << ' ' << a[2];
else if (n == 3)
{
if (b[1] == 1 && b[2] == 1 && b[3] == 1)
cout << 3 << endl << 1 << ' ' << 1 << ' ' << 1;
else if (b[1] == 1 && b[2] == 1)
cout << 2 + b[3] << endl << 1 << ' ' << 2 << ' ' << 3;
else if (b[1] == 1 && b[3] == 1)
cout << 2 + b[2] << endl << 1 << ' ' << 2 << ' ' << 3;
else if (b[2] == 1 && b[3] == 1)
cout << 2 + b[1] << endl << 1 << ' ' << 2 << ' ' << 3;
else
{
if (b[1] > b[2])
{
swap(b[1], b[2]);
swap(a[1], a[2]);
}
if (b[1] > b[3])
{
swap(b[1], b[3]);
swap(a[1], a[3]);
}
cout << b[1] + b[2] * b[3] << endl << a[1] << ' ' << a[2] << ' ' << a[3];
}
}
else
{
solve();
output();
}
}