def m_s_c1(l):
maxsum = 0
start = 0
end = 0
for x in range(len(l)):
thissum = 0
for y in range(x,len(l)):
thissum += l[y]
if thissum > maxsum:
maxsum = thissum
start = x
end = y
return maxsum,start,end
def m_s_c2(list,left,right):
if left == right:
if list[left] > 0:
return list[left]
else:
return 0
mid = (left+right)//2
MaxLeftSum = m_s_c2(list,left,mid)
MaxRightSum = m_s_c2(list,mid+1,right)
MaxLeftBorderSum = 0
LeftBorderSum = 0
for index in range(mid,left-1,-1):
LeftBorderSum += list[index]
if LeftBorderSum > MaxLeftBorderSum:
MaxLeftBorderSum = LeftBorderSum
MaxRightBorderSum = 0
RightBorderSum = 0
for index in range(mid+1,right+1):
RightBorderSum += list[index]
if RightBorderSum > MaxRightBorderSum:
MaxRightBorderSum = RightBorderSum
return max(MaxLeftSum,MaxRightSum,MaxLeftBorderSum+MaxRightBorderSum)
def m_s_c3(list):
MaxSum = 0
ThisSum = 0
for index in range(len(list)):
ThisSum += list[index]
if ThisSum > MaxSum:
MaxSum = ThisSum
if ThisSum < 0:
ThisSum = 0
return MaxSum
def test1(l):
res = m_s_c3(l)
print(res)
K = input()
line = input()
l = list(map(lambda x:int(x),line.split()))
test1(l)