//第二
package shangtang;

import java.util.Scanner;

/**
 * @Param: 6
 *    3 -1 8 6 5 2
 * @Date: 2019/9/21 19:40
 */
public class Main2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();
        String inputs = sc.nextLine();
        String[] s = inputs.split(" ");
        if(s.length != n)
            throw new RuntimeException("输入有误");
        int[] nums = new int[n];
        for(int i=0;i<n;i++)
            nums[i] = Integer.valueOf(s[i]);
        //如果全部数字小于0
        boolean nf = true;
        int minVal = Integer.MIN_VALUE;
        for(int i=0;i<n;i++){
            if(nums[i]>0){
                nf = false;
                break;
            }
            minVal = Math.max(minVal,nums[i]);
        }
        if(nf){
            System.out.println(minVal);
            return;
        }
        int maxVal = Integer.MIN_VALUE;  //最大总和
        int curVal = 0;      // 当前总和
        int startAddIndex = 0;  //开始相加时候的下标 , 记录让和为0时的下标
        for(;startAddIndex<n;startAddIndex++){
            curVal = 0;
            for(int i=startAddIndex;i<n+startAddIndex;i++){
                int index = i%n;
                curVal += nums[index];
                if(curVal<0){
                    curVal = 0;
                }
                if(curVal>maxVal)
                    maxVal = curVal;
            }
        }
        System.out.println(maxVal);
    }
}