1 /*
2 最大连续子序列和
3 输出 ans 和 首元素,尾元素
4 */
5
6 /*
7 //TLE 只适合处理小型数据
8 #include<stdio.h>
9 #include<string.h>
10 #include<stdlib.h>
11 #include<algorithm>
12 #include<iostream>
13 #include<queue>
14 using namespace std;
15 const int maxn = 10005;
16 int a[ maxn ];
17 int main(){
18 int n;
19 while( scanf("%d",&n) !=EOF ){
20 if( n==0 ) break;
21 for( int i=1;i<=n;i++ )
22 scanf("%d",&a[ i ]);
23 int st=1,en=1;
24 int ans=0;
25 int flag=-1;
26 for( int i=1;i<=n;i++ ){
27 int tmp=0;
28 for( int j=i;j<=n;j++ ){
29 tmp+=a[ j ];
30 if( tmp>ans ){
31 ans=tmp;
32 st= i ;
33 en= j ;
34 flag=1;
35 continue;
36 }
37 if( ans==tmp ){
38 if(flag==-1){
39 st=i;
40 en=j;
41 flag=1;
42 }
43 }
44 }
45 }
46 if( flag==-1 )
47 printf("0 %d %d\n",a[1],a[n]);
48 else{
49 printf("%d %d %d\n",ans,a[st],a[en]);
50 }
51 }
52 return 0;
53 }
54 */
55 #include<stdio.h>
56 #include<string.h>
57 #include<stdlib.h>
58 #include<algorithm>
59 #include<iostream>
60 #include<queue>
61 using namespace std;
62 const int maxn = 10005;
63 int a[ maxn ];
64 int sum[ maxn ];
65 int main(){
66 int n;
67 while( scanf("%d",&n)!=EOF && n ){
68 for( int i=1;i<=n;i++ )
69 scanf("%d",&a[ i ]);
70 int ans;//-1
71 memset( sum,0,sizeof(sum) );
72 int st,en,x,y;
73 ans=st=en=x=y=a[ 1 ];//x,y在这里能初始化
74 sum[ 1 ]=a[ 1 ];
75 for( int i=2;i<=n;i++ ){
76 if( sum[ i-1 ]<=0 ){
77 sum[ i ]=a[ i ];
78 st=en=a[ i ];
79 }
80 else{
81 sum[ i ]=sum[ i-1 ]+a[ i ];
82 en=a[ i ];
83 }
84 if( ans<sum[ i ] ){
85 ans=sum[ i ];
86 x=st;
87 y=en;
88 }
89 }
90 if( ans<0 ){
91 printf("0 %d %d\n",a[1],a[n]);
92 }
93 else{
94 printf("%d %d %d\n",ans,x,y);
95 }
96 }
97 return 0;
98 }