// [8/1/2014 Sjm]
/*
经典问题。。。
状态:以当前位置i结尾的最大连续子序列和
*/
1 #include <iostream>
2 #include <cstdio>
3 #include <cstdlib>
4 #include <cmath>
5 #include <string>
6 #include <algorithm>
7 #include <cstring>
8 #include <set>
9 #include <utility>
10 #include <locale>
11 #include <ctime>
12 using namespace std;
13 //using int64 = long long;
14 const int INF = 0x3f3f3f3f;
15 const int MaxN = 10010;
16
17 int N, arr[MaxN];
18
19 void Solve()
20 {
21 int ans = -1, maxTmp = -1;
22 int beginTmp = 0, endTmp = 0, ibegin = 0, iend = 0;
23 for (int i = 0; i < N; ++i)
24 {
25 if (maxTmp < 0)
26 {
27 maxTmp = arr[i];
28 beginTmp = i;
29 endTmp = i;
30 }else
31 {
32 maxTmp += arr[i];
33 endTmp = i;
34 }
35 if (maxTmp > ans)
36 {
37 ans = maxTmp;
38 //cout << "---" << ans << endl;
39 ibegin = beginTmp;
40 iend = endTmp;
41 }
42 }
43 cout << ans << " " << arr[ibegin] << " " << arr[iend] << endl;
44 }
45
46 int main()
47 {
48 #ifdef HOME
49 freopen("in", "r", stdin);
50 //freopen("out", "w", stdout);
51 #endif
52
53 while (cin >> N && N)
54 {
55 bool judge = true;
56 for (int i = 0; i < N; ++i) {
57 cin >> arr[i];
58 if (arr[i] >= 0) judge = false;
59 }
60 if (judge)
61 {
62 cout << 0 << " " << arr[0] << " " << arr[N - 1] << endl;
63 }
64 else
65 {
66 Solve();
67 }
68 }
69
70 #ifdef HOME
71 cerr << "Time elapsed: " << clock() / CLOCKS_PER_SEC << " ms" << endl;
72 #endif
73 return 0;
74 }