#include <iostream>
using namespace std;
#include<bits/stdc++.h>
int main() {
// your code goes here
int n ; cin>>n;
vector<int>arr(n);
for(int i = 0 ;i<n;i++)cin>>arr[i];
//p1 is prefix sum (maximum sub array sum ending at index i
vector<int>p1(n);
p1[0]=arr[0];
for(int i = 1 ; i< n ; i++){
p1[i] = max({p1[i-1]+arr[i] , arr[i]});
}
//now create maximum subb array sum starting at index i ( p2 suffix sum )
vector<int>p2(n);
p2[n-1]=arr[n-1];
for(int i = n-2;i>=0;i--){
if(arr[i]<arr[i+1]){
p2[i]=max(p2[i+1]+arr[i],arr[i]);
}
else {
p2[i]=arr[i];
}
}
vector<int>max_p1(n); //max of max sub array sum ending at i
max_p1[0]=p1[0];
for(int i = 1;i<n;i++){
max_p1[i]=max(max_p1[i-1],p1[i]);
}
vector<int>max_p2(n); //max of max sub array sum starting at i
max_p2[n-1]=p2[n-1];
for(int i = n-2;i>=0;i--){
max_p2[i]=max(max_p2[i+1],p2[i]);
}
int max_sum = INT_MIN;
for(int stick =0;stick<n-1;stick++){
int left_maxsum = max_p1[stick];
int right_maxsum=max_p2[stick+1];
max_sum = max(left_maxsum+right_maxsum, max_sum);
}
cout<<max_sum;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglpbnQgbiA7IGNpbj4+bjsKCXZlY3RvcjxpbnQ+YXJyKG4pOwoJZm9yKGludCBpID0gMCA7aTxuO2krKyljaW4+PmFycltpXTsKCS8vcDEgaXMgcHJlZml4IHN1bSAobWF4aW11bSBzdWIgYXJyYXkgc3VtIGVuZGluZyBhdCBpbmRleCBpICAKCXZlY3RvcjxpbnQ+cDEobik7CglwMVswXT1hcnJbMF07Cglmb3IoaW50IGkgPSAxIDsgaTwgbiA7IGkrKyl7CgkJcDFbaV0gPSBtYXgoe3AxW2ktMV0rYXJyW2ldICwgYXJyW2ldfSk7Cgl9CgkvL25vdyBjcmVhdGUgbWF4aW11bSBzdWJiIGFycmF5IHN1bSBzdGFydGluZyBhdCBpbmRleCBpICggcDIgc3VmZml4IHN1bSApCgl2ZWN0b3I8aW50PnAyKG4pOwoJcDJbbi0xXT1hcnJbbi0xXTsKCWZvcihpbnQgaSA9IG4tMjtpPj0wO2ktLSl7CgkJaWYoYXJyW2ldPGFycltpKzFdKXsKCQkJcDJbaV09bWF4KHAyW2krMV0rYXJyW2ldLGFycltpXSk7CgkJfQoJCWVsc2UgewoJCQlwMltpXT1hcnJbaV07CgkJfQoJfQoKCXZlY3RvcjxpbnQ+bWF4X3AxKG4pOyAvL21heCBvZiBtYXggc3ViIGFycmF5IHN1bSBlbmRpbmcgYXQgaSAKCW1heF9wMVswXT1wMVswXTsKCWZvcihpbnQgaSA9IDE7aTxuO2krKyl7CgkJbWF4X3AxW2ldPW1heChtYXhfcDFbaS0xXSxwMVtpXSk7Cgl9Cgl2ZWN0b3I8aW50Pm1heF9wMihuKTsgLy9tYXggb2YgbWF4IHN1YiBhcnJheSBzdW0gc3RhcnRpbmcgYXQgaSAKCW1heF9wMltuLTFdPXAyW24tMV07Cglmb3IoaW50IGkgPSBuLTI7aT49MDtpLS0pewoJCW1heF9wMltpXT1tYXgobWF4X3AyW2krMV0scDJbaV0pOwoJfQoJaW50IG1heF9zdW0gPSBJTlRfTUlOOwoJZm9yKGludCBzdGljayA9MDtzdGljazxuLTE7c3RpY2srKyl7CgkJaW50IGxlZnRfbWF4c3VtID0gbWF4X3AxW3N0aWNrXTsKCQlpbnQgcmlnaHRfbWF4c3VtPW1heF9wMltzdGljaysxXTsKCQltYXhfc3VtID0gbWF4KGxlZnRfbWF4c3VtK3JpZ2h0X21heHN1bSwgbWF4X3N1bSk7Cgl9Cgljb3V0PDxtYXhfc3VtOwoJcmV0dXJuIDA7Cn0=