n = int(input())
nums = list(map(int, input().split())) 
s = sum(nums) # 数字之和
dpmax = [0] * n # dpmax[i] 表示以 nums[i] 结尾的子数组的最大和
dpmin = [0] * n # dpmin[i] 表示以 nums[i] 结尾的子数组的最小和
dpmax[0] = nums[0]
dpmin[0] = nums[0]
for i in range(1, n):
    dpmax[i] = max(nums[i], dpmax[i-1] + nums[i])
    dpmin[i] = min(nums[i], dpmin[i-1] + nums[i]) 
if min(dpmin) == s: # 此时除去最小和子数组的部分为空
    print(max(dpmax))
else:
    for i in range(n):
        dpmin[i] = s - dpmin[i] # 与最小和子数组互补部分的和,即跨过数组尾部的连续数组的和

    print(max(max(dpmax), max(dpmin)))