#include <iostream>
using namespace std;
const int N = 10010;
// dp保存以第k个元素结束的子序列的最大值,
// a保存输入数据,l保存第k个元素结束的子序列的第一个元素的下标
int dp[N], a[N], l[N];  
int main() {
    int n;
    while(cin >> n && n)
    {
        int ans;
        for(int i = 0; i < n; i ++) cin >> a[i];
        dp[0] = a[0], l[0] = 0, ans = 0;
        for(int i = 1; i < n; i ++)
        {
            dp[i] = a[i], l[i] = i;
            if(dp[i - 1] > 0)
            {
                dp[i] += dp[i - 1], l[i] = l[i - 1];
            }
            if(dp[i] > dp[ans]) ans = i;
        }
        if(dp[ans] < 0) cout << 0 << ' ' << a[0] <<' ' << a[n - 1] << endl;
        else cout << dp[ans] << " " << a[l[ans]] << ' ' <<a[ans] << endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")