#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin>>n;
vector<int> arr(n,0);
for(int i=0;i<n;i++){
cin>>arr[i];
}
//求非环的连续最大值
int current_maxValue=arr[0];
int maxValue=arr[0];
for(int i=1;i<n;i++){
if(current_maxValue+arr[i]>arr[i]){
current_maxValue+=arr[i];
}else{
current_maxValue=arr[i];
}
maxValue=max(current_maxValue,maxValue);
}
//求非环数组最小值
int current_minValue=arr[0];
int minValue=arr[0];
for(int i=1;i<n;i++){
if(current_minValue+arr[i]<arr[i]){
current_minValue+=arr[i];
}else{
current_minValue=arr[i];
}
minValue=min(current_minValue,minValue);
}
//求数组和
int totalSum=arr[0];
for(int i=1;i<n;i++){
totalSum+=arr[i];
}
int circle_Sum=0;
if(totalSum==minValue){//如果数组和等于最小值和,意味着他们全部为负数,比如-3 -2 -1 -3 -5
circle_Sum=maxValue;//最大值为-1
}else{
circle_Sum=max(totalSum-minValue,maxValue);
}
cout<<circle_Sum;
return 0;
}
// 64 位输出请用 printf("%lld")