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