#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;
}
}

京公网安备 11010502036488号