#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n&&n)
{
int a[n+1];
for(int i=1;i<=n;i++)
cin>>a[i];
int sum=-1,temp=0;//定义一个总和为负数
int s=1,e=1;//最大子段的首尾
int s1=1,s2=1;//临时子段的首尾
for(int i=1;i<=n;i++)
{
temp+=a[i];
e=i;
if(temp>sum)//如果大于最大值则更新
{
sum=temp;
s1=s;
s2=e;
}
if(temp<=0)//如果当前元素加进去会让值变为负的,则直接丢弃,重置s的值,temp为0
{
temp=0;
s=i+1;
}
}
if(sum==-1)
cout<<0<<' '<<a[1]<<' '<<a[n]<<endl;
else
cout<<sum<<' '<<a[s1]<<' '<<a[s2]<<endl;
}
}
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n&&n)
{
int a[n+1];
for(int i=1;i<=n;i++)
cin>>a[i];
int sum=-1,temp=0;//定义一个总和为负数
int s=1,e=1;//最大子段的首尾
int s1=1,s2=1;//临时子段的首尾
for(int i=1;i<=n;i++)
{
if(a[i]>=0)//如果大于0,则可以加到当前子段
{
temp+=a[i];e=i;//当前子段的尾巴也变化
if(temp>sum)//如果大于最大值则更新
{
sum=temp;
s1=s;
s2=e;
}
}
else
{
if(a[i]+temp<=0)//如果当前元素加进去会让值变为负的,则直接丢弃,重置s的值,temp为0
{
temp=0;
s=i+1;
}
else//否则,将该元素加入到当前子段
{
temp+=a[i];
}
}
}
if(sum==-1)
cout<<0<<' '<<a[1]<<' '<<a[n]<<endl;
else
cout<<sum<<' '<<a[s1]<<' '<<a[s2]<<endl;
}
}