while True:
    try:
        k=int(input())#接收收入的整数K
        if k==0:
            break     #若K=0,中止运算
        list1=input().split()  #接收K个整数,并存储到列表里
        max_num=int(list1[0])  #设整个序列的最优子序列值为第一个元素
        num=int(list1[0])      #设初始子序列最大值为第一个元素
        i1,i2=0,0              #初始子序列的首尾下标值
        max_i1,max_i2=0,0      #整个序列的最大子序列值的首尾下标值
        for i in range(1,k):
            if num+int(list1[i])<int(list1[i]):#num为负数时,初始子序列最大值定义为当前值
                num=int(list1[i])
                i1=i          #初始子序列最大值的首位下标相应更新
                i2=i
            else:
                num=num+int(list1[i])   #初始子序列值更新
                i2=i                    #初始子序列的尾位下标更新
            if max_num<num:     #判断此时子序列值和最优值大小
                max_num=num     #子序列值大于最优值时,更新最优值
                max_i1=i1
                max_i2=i2       #更新最优值首尾下标
        if max_num<0:   #最优值为负数时,即列表所有元素均为负数
            max_num=0   
            max_i1=0
            max_i2=len(list1)-1  #输出最优值为0,整个列表的首尾元素
        print(max_num,list1[max_i1],list1[max_i2])
    except:
        break