#include <iostream>
#include <fstream>
using namespace std;
void citire(int *a, int &n)
{
ifstream f1("secv.in");
f1 >> n;
for (int i = 1; i <= n; ++i) f1 >> a[i];
f1.close();
}
int det_poz_max(int *a, int n)
{
int max = a[1], pozmax = 0;
for (int i = 2; i <= n; ++i)
if (max < a[i]) {
max = a[i];
pozmax = i;
}
return pozmax;
}
int sum_centru(int *a, int n, int pozmax, int &ci, int &cj)
{
ci = 1;
cj = n - 1;
return a[1] + a[pozmax] + a[n];
}
int sum_dreapta(int *a, int n, int pozmax, int &ci, int &cj)
{
int max, mins, ss;
max = a[1];
mins = 3 * a[pozmax];
if (pozmax < 3) return mins;
for (int i = 1; i < pozmax; ++i) {
if (max < a[i]) max = a[i];
ss = max + a[i + 1] + a[pozmax];
if (mins > ss) {
ci = i;
cj = i + 1;
mins = ss;
}
}
return mins;
}
void mirror(int *a, int n)
{
int l1, l2, aux;
for (l1 = 0, l2 = n - 1; l1 < l2; ++l1, --l2) {
aux = a[l1];
a[l1] = a[l2];
a[l2] = aux;
}
}
int sum_stanga(int *a, int n, int pozmax, int &ci, int &cj)
{
int s;
if (pozmax > n - 2) return 3 * a[pozmax];
mirror(a, n);
s = sum_dreapta(a, n, pozmax, ci, cj);
ci = n - ci + 1;
cj = n - cj + 1;
return s;
}
void afisare(int s, int ci, int cj)
{
ofstream f2("secv.out");
f2 << s << endl << ci << " " << cj;
f2.close();
}
int main()
{
int a[30002], n, pozmax, s1, s2, s3, ci1, ci2, ci3, cj1, cj2, cj3;
citire(a, n);
det_poz_max(a, n);
s1 = sum_centru(a, n, pozmax, ci1, cj1);
s2 = sum_dreapta(a, n, pozmax, ci2, cj2);
s3 = sum_stanga(a, n, pozmax, ci3, cj3);
if (s1 >= s2) {
if (s1 >= s3) {
afisare(s1, ci1, cj1);
return 0;
}
else {
afisare(s3, ci3, cj3);
return 0;
}
}
else
if (s2 >= s3) {
afisare(s2, ci2, cj2);
return 0;
}
else {
afisare(s3, ci3, cj3);
}
return 0;
}