#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
struct node{
int f,e;
};
int dp[10001];
int main(){
int n,ok;
node a[10001];
while(~scanf("%d",&n)&&n){
ok = 1;
for(int i = 1;i<=n;++i){
scanf("%d",&a[i].e);
a[i].f = a[i].e;
dp[i] = a[i].e;
if(a[i].e >= 0)
ok = 0;
}
dp[0] = 0;
if(ok)
cout<<"0"<<" "<<a[1].f<<" "<<a[n].e<<endl;
else{
int maxx = 0,q = 0;
for(int i = 1;i<=n;++i){
if(dp[i] + dp[i-1] > dp[i]){
dp[i] = dp[i] + dp[i-1];
a[i].f = a[i-1].f;
}
}
for(int i = 1;i<=n;++i){
if(dp[i]>maxx){
maxx = dp[i];
q = i;
}
}
cout<<maxx<<" "<<a[q].f<<" "<<a[q].e<<endl;}
}
return 0;
}
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
struct node{
int f,e;
};
int dp[10001];
int main(){
int n,ok;
node a[10001];
while(~scanf("%d",&n)&&n){
ok = 1;
for(int i = 1;i<=n;++i){
scanf("%d",&a[i].e);
a[i].f = a[i].e;
dp[i] = a[i].e;
if(a[i].e >= 0)
ok = 0;
}
dp[0] = 0;
if(ok)
cout<<"0"<<" "<<a[1].f<<" "<<a[n].e<<endl;
else{
int maxx = 0,q = 0;
for(int i = 1;i<=n;++i){
if(dp[i] + dp[i-1] > dp[i]){
dp[i] = dp[i] + dp[i-1];
a[i].f = a[i-1].f;
}
}
for(int i = 1;i<=n;++i){
if(dp[i]>maxx){
maxx = dp[i];
q = i;
}
}
cout<<maxx<<" "<<a[q].f<<" "<<a[q].e<<endl;}
}
return 0;
}