#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> b(n + 1);
for (int i = 1; i <= n; i++) {
cin >> b[i];
}
vector<int> p(n + 1, 0);
vector<int> s(n + 1, 0);
vector<int> u(n + 1, 0);
vector<int> max_s(n + 1, 0);
p[1] = b[1];
for (int i = 2; i <= n; i++) {
p[i] = max(b[i], b[i] + p[i - 1]);
//cout << p[i] << endl;
}
s[n] = b[n];
u[n] = s[n];
for (int j = n - 1; j >= 1; j--) {
if (b[j] < b[j + 1]) {
s[j] = b[j] + s[j + 1];
} else {
s[j] = b[j];
}
u[j] = max(b[j], s[j]);
max_s[j] = max(u[j], max_s[j + 1]);
}
int answer = 0;
for (int i = 1; i <= n - 1; i++) {
int l = p[i] + max_s[i + 1];
answer = max(answer, l);
}
cout << answer << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICB2ZWN0b3I8aW50PiBiKG4gKyAxKTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gYltpXTsKICAgIH0KCiAgICB2ZWN0b3I8aW50PiBwKG4gKyAxLCAwKTsKICAgIHZlY3RvcjxpbnQ+IHMobiArIDEsIDApOwogICAgdmVjdG9yPGludD4gdShuICsgMSwgMCk7CiAgICB2ZWN0b3I8aW50PiBtYXhfcyhuICsgMSwgMCk7CgogICAgcFsxXSA9IGJbMV07CgogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgcFtpXSA9IG1heChiW2ldLCBiW2ldICsgcFtpIC0gMV0pOwogICAgICAgIC8vY291dCA8PCBwW2ldIDw8IGVuZGw7CiAgICB9CgogICAgc1tuXSA9IGJbbl07CiAgICB1W25dID0gc1tuXTsKCiAgICBmb3IgKGludCBqID0gbiAtIDE7IGogPj0gMTsgai0tKSB7CiAgICAgICAgaWYgKGJbal0gPCBiW2ogKyAxXSkgewogICAgICAgICAgICBzW2pdID0gYltqXSArIHNbaiArIDFdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNbal0gPSBiW2pdOwogICAgICAgIH0KCiAgICAgICAgdVtqXSA9IG1heChiW2pdLCBzW2pdKTsKICAgICAgICBtYXhfc1tqXSA9IG1heCh1W2pdLCBtYXhfc1tqICsgMV0pOwogICAgfQoKICAgIGludCBhbnN3ZXIgPSAwOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG4gLSAxOyBpKyspIHsKICAgICAgICBpbnQgbCA9IHBbaV0gKyBtYXhfc1tpICsgMV07CiAgICAgICAgYW5zd2VyID0gbWF4KGFuc3dlciwgbCk7CiAgICB9CgogICAgY291dCA8PCBhbnN3ZXIgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=