//第二
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);
}
}