#include<stdio.h>
#include <string.h>
#define size 100050
int begin = 0, end = 0;
int b = 0, e = 0; //定义成全局变量方便修改
int FindMax(int a[], int n);
int main(void)
{
int num;
scanf("%d", &num);
int str[size] = { 0 };
for (int i = 0; i < num; i++)
{
scanf("%d", &str[i]);
}
int sum=FindMax(str, num);
printf("%d %d %d\n", sum,begin,end);
return 0;
}
int FindMax(int a[], int n)
{
int maxsub=0, thissub = 0;
int flag = 0;
for (int i = 0; i < n; i++)
{
if (!b)
{
b = a[i]; //暂时储存开头
}
if (a[i] >= 0)
{
flag = 1; //判断是否全为0
}
thissub += a[i];
if (thissub > maxsub)
{
e = a[i];
begin = b;
end = e; //储存开头结尾
maxsub = thissub;
}
else if (thissub < 0)
{
b = 0; //清空
e = 0;
thissub = 0;
}
}
if (!flag)
{
begin = a[0];
end = a[n - 1];
}
return maxsub;
}