//#include <cstdio>
//
//int s[6000001];
//
//int main()
//{
// FILE *fin = fopen("ssm.in", "r");
// FILE *fout = fopen("ssm.out", "w");
// int n;
// fscanf(fin, "%d", &n);
// int i;
// int elem, min = 1000000000;
// int first, last, rez = -1, indmin;
// s[0] = 0;
// for(i = 1; i <= n; i++)
// {
// fscanf(fin, "%d", &elem);
// s[i] = s[i - 1] + elem;
// // printf("%d ", s[i]);
// if(s[i] < min)
// {
// min = s[i];
// indmin = i;
// }
// }
// // printf("%d", indmin);
// for(i = indmin; i <= n; i++)
// {
// if(s[i] - s[indmin] > rez)
// {
// rez = s[i] - s[indmin];
// last = i;
// }
// }
// if(min > rez)
// fprintf(fout, "%d %d %d", rez, indmin + 1, last);
// else
// fprintf(fout, "%d %d %d", s[indmin - 1], 1, indmin - 1);
// fclose(fin);
// fclose(fout);
// return 0;
//}
#include <stdio.h>
#define max(a, b)(a > b ? a : b)
int main() {
FILE *fin = fopen("ssm.in", "r"), *fout = fopen("ssm.out", "w");
int n, sc,scurent, smax = -999999999, elem, first, last, maxlast, lastc, firstc, maxfirst;
int i;
fscanf(fin, "%d", &n);
sc = 0;
for(i = 1;i <= n;i++) {
fscanf(fin, "%d", &elem);
scurent = max(elem, sc + elem);
first = firstc;
if(elem > sc+elem)
first = i;
if(scurent > smax) {
maxfirst = first;
maxlast = i;
smax = scurent;
}
sc = scurent;
firstc = first;
}
fprintf(fout, "%d %d %d", smax, maxfirst, maxlast);
fclose(fin);
fclose(fout);
return 0;
}