#include <iostream>
using namespace std;

//最大序列和(要求输出第一个和最后一个元素)
long long num[1000010];
long long dp[100010];
int first[100010];
int last;

long long maxsubsequence(int n){
    last=0;
    dp[0]=num[0];
    first[0]=0;
    long long ans=dp[0];
    for(int i=1;i<n;i++){
        dp[i]=max(num[i],dp[i-1]+num[i]);
        if(num[i]>dp[i-1]+num[i])first[i]=i;
        else first[i]=first[i-1];
    }
    for(int i=1;i<n;i++)
        if (dp[i]>ans){
            last=i;
            ans=dp[i];
        }
    return ans;
}

int main(){
    int n;
    while(cin>>n){
        if(n==0)break;
        char flag='-';
        for(int i=0;i<n;i++){
            cin>>num[i];
            if(num[i]>=0)flag='+';
        }
        if (flag=='-'){
            cout<<"0 "<<num[0]<<" "<<num[n-1]<<endl;
            continue;
        }
        long long ans=maxsubsequence(n);
        cout<<ans<<" "<<num[first[last]]<<" "<<num[last]<<endl;
    }
    return 0;
}