#include <iostream>
using namespace std;

int main() {
    int n;
    while(cin>>n){
        if(!n) break;
        int dp[n];
        int l,r;    //最大区间左右边界
        int l_cur;  //当前下标对应最大序列的左边界
        int res;
        for(int i=0;i<n;++i){
            int c;
            cin>>c;
            if(i==0) {
                dp[0]=c;    
                res=c;
                l_cur=c;    //初始化
                l=c;
                r=c;
            }
            else{    
                if(dp[i-1]<=0){
                    dp[i]=c;
                    l_cur=c;        //左边界重置
                }
                else{    
                    dp[i]=dp[i-1]+c;    //无须重置左边界
                }
                if (res<dp[i]){
                    res=dp[i];
                    l=l_cur;
                    r=c;        //若更新最大右边界,一定是当前下标对应的数字
                }
            }
        }
        if (res>=0)
        cout<<res<<" "<<l<<" "<<r<<endl;
        else cout<<0<<" "<<dp[0]<<" "<<dp[n-1]<<endl;
    }
}