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