#include <iostream>
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define fo(i,start,end) for(ll i=start;i<end;i++)
int Kadanes(vector<ll>&arr,ll start,ll end){
int prevSum=0;
int MaxSeen = -1e9;
for(int i=start;i<=end;i++){
int sum = max(prevSum+arr[i],arr[i]);
prevSum = sum;
MaxSeen = max(MaxSeen,sum);
}
return MaxSeen;
}
int main() {
// your code goes here
vector<ll>arr = {-10,-5,2,4,-15,-20,1,2};
ll n = arr.size();
//we need to apply Kadane's 2 time and find it
ll MaxSeen = -1e9;
fo(i,0,n-1){
ll result = Kadanes(arr,0,i) + Kadanes(arr,i+1,n-1); //inclusive of both starting and ending index
MaxSeen = max(MaxSeen,result);
}
cout<<MaxSeen<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBsbCA9IGxvbmcgbG9uZzsKI2RlZmluZSBmbyhpLHN0YXJ0LGVuZCkgZm9yKGxsIGk9c3RhcnQ7aTxlbmQ7aSsrKQoKaW50IEthZGFuZXModmVjdG9yPGxsPiZhcnIsbGwgc3RhcnQsbGwgZW5kKXsKCWludCBwcmV2U3VtPTA7CglpbnQgTWF4U2VlbiA9IC0xZTk7Cglmb3IoaW50IGk9c3RhcnQ7aTw9ZW5kO2krKyl7CgkJaW50IHN1bSA9IG1heChwcmV2U3VtK2FycltpXSxhcnJbaV0pOwoJCXByZXZTdW0gPSBzdW07CgkJTWF4U2VlbiA9IG1heChNYXhTZWVuLHN1bSk7Cgl9CglyZXR1cm4gTWF4U2VlbjsKfQoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgl2ZWN0b3I8bGw+YXJyID0gey0xMCwtNSwyLDQsLTE1LC0yMCwxLDJ9OwoJbGwgbiA9IGFyci5zaXplKCk7CgkvL3dlIG5lZWQgdG8gYXBwbHkgS2FkYW5lJ3MgMiB0aW1lIGFuZCBmaW5kIGl0IAoJbGwgTWF4U2VlbiA9IC0xZTk7CglmbyhpLDAsbi0xKXsKCWxsIHJlc3VsdCA9IEthZGFuZXMoYXJyLDAsaSkgKyBLYWRhbmVzKGFycixpKzEsbi0xKTsgLy9pbmNsdXNpdmUgb2YgYm90aCBzdGFydGluZyBhbmQgZW5kaW5nIGluZGV4CglNYXhTZWVuID0gbWF4KE1heFNlZW4scmVzdWx0KTsKCX0KCWNvdXQ8PE1heFNlZW48PGVuZGw7CglyZXR1cm4gMDsKfQ==