#include <bits/stdc++.h>
using namespace std;
int maxTwoNonOverlappingSubarraysSum(const vector<int>& nums) {
int n = nums.size() - 1;
if (n <= 0) return 0;
vector<int> leftBest(n + 2, 0);
vector<int> rightBest(n + 2, 0);
// Single pass left-to-right (Kadane + Running Max merged)
int currMax = 0;
int globalMax = INT_MIN;
for (int i = 1; i <= n; ++i) {
currMax = max(nums[i], currMax + nums[i]);
globalMax = max(globalMax, currMax);
leftBest[i] = globalMax;
}
// Single pass right-to-left
currMax = 0;
globalMax = INT_MIN;
for (int i = n; i >= 1; --i) {
currMax = max(nums[i], currMax + nums[i]);
globalMax = max(globalMax, currMax);
rightBest[i] = globalMax;
}
// Find optimal split point
int result = 0;
for (int i = 1; i < n; ++i) {
result = max(result, leftBest[i] + rightBest[i + 1]);
}
return result;
}
int main(){
int n;
cin>>n;
vector<int>a(n+1);
for(int i = 1 ; i<= n;i++){
cin>>a[i];
}
cout<<maxTwoNonOverlappingSubarraysSum(a);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYXhUd29Ob25PdmVybGFwcGluZ1N1YmFycmF5c1N1bShjb25zdCB2ZWN0b3I8aW50PiYgbnVtcykgewogICAgaW50IG4gPSBudW1zLnNpemUoKSAtIDE7CiAgICBpZiAobiA8PSAwKSByZXR1cm4gMDsKCiAgICB2ZWN0b3I8aW50PiBsZWZ0QmVzdChuICsgMiwgMCk7CiAgICB2ZWN0b3I8aW50PiByaWdodEJlc3QobiArIDIsIDApOwoKICAgIC8vIFNpbmdsZSBwYXNzIGxlZnQtdG8tcmlnaHQgKEthZGFuZSArIFJ1bm5pbmcgTWF4IG1lcmdlZCkKICAgIGludCBjdXJyTWF4ID0gMDsKICAgIGludCBnbG9iYWxNYXggPSBJTlRfTUlOOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgY3Vyck1heCA9IG1heChudW1zW2ldLCBjdXJyTWF4ICsgbnVtc1tpXSk7CiAgICAgICAgZ2xvYmFsTWF4ID0gbWF4KGdsb2JhbE1heCwgY3Vyck1heCk7CiAgICAgICAgbGVmdEJlc3RbaV0gPSBnbG9iYWxNYXg7CiAgICB9CgogICAgLy8gU2luZ2xlIHBhc3MgcmlnaHQtdG8tbGVmdAogICAgY3Vyck1heCA9IDA7CiAgICBnbG9iYWxNYXggPSBJTlRfTUlOOwogICAgZm9yIChpbnQgaSA9IG47IGkgPj0gMTsgLS1pKSB7CiAgICAgICAgY3Vyck1heCA9IG1heChudW1zW2ldLCBjdXJyTWF4ICsgbnVtc1tpXSk7CiAgICAgICAgZ2xvYmFsTWF4ID0gbWF4KGdsb2JhbE1heCwgY3Vyck1heCk7CiAgICAgICAgcmlnaHRCZXN0W2ldID0gZ2xvYmFsTWF4OwogICAgfQoKICAgIC8vIEZpbmQgb3B0aW1hbCBzcGxpdCBwb2ludAogICAgaW50IHJlc3VsdCA9IDA7CiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47ICsraSkgewogICAgICAgIHJlc3VsdCA9IG1heChyZXN1bHQsIGxlZnRCZXN0W2ldICsgcmlnaHRCZXN0W2kgKyAxXSk7CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKfQppbnQgbWFpbigpewoJaW50IG47CgljaW4+Pm47Cgl2ZWN0b3I8aW50PmEobisxKTsKCWZvcihpbnQgaSA9IDEgOyBpPD0gbjtpKyspewoJCWNpbj4+YVtpXTsKCX0KCWNvdXQ8PG1heFR3b05vbk92ZXJsYXBwaW5nU3ViYXJyYXlzU3VtKGEpOwp9