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