#include<bits/stdc++.h>
using namespace std;
int Crossmaxsum(vector<int>&nums,int left,int mid,int right)
{
int maxleftsum=-100,maxrightsum=-100;
int leftsum=0,rightsum=0;
for(int i=mid;i>=left;i--)
{
leftsum=leftsum+nums[i];
if(leftsum>maxleftsum)
{
maxleftsum=leftsum;
}
}
for(int i=mid+1;i<=right;i++)
{
rightsum=rightsum+nums[i];
if(rightsum>maxrightsum)
{
maxrightsum=rightsum;
}
}
return maxleftsum+maxrightsum;
}
int Maxsubarraysum(vector<int>&nums,int left,int right)
{
if(left==right)
{
return nums[left];
}
int mid=(left+right)/2;
int leftpart=Maxsubarraysum(nums,left,mid);
int rightpart=Maxsubarraysum(nums,mid+1,right);
int Crossingmaxsum=Crossmaxsum(nums,left,mid,right);
return max(leftpart,max(rightpart,Crossingmaxsum));
}
int main()
{
int n;
cin>>n;
vector<int>nums;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
nums.push_back(x);
}
int maxsubarraysum=Maxsubarraysum(nums,0,n-1);
cout<<maxsubarraysum<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IENyb3NzbWF4c3VtKHZlY3RvcjxpbnQ+Jm51bXMsaW50IGxlZnQsaW50IG1pZCxpbnQgcmlnaHQpCnsKaW50IG1heGxlZnRzdW09LTEwMCxtYXhyaWdodHN1bT0tMTAwOwppbnQgbGVmdHN1bT0wLHJpZ2h0c3VtPTA7CmZvcihpbnQgaT1taWQ7aT49bGVmdDtpLS0pCnsKbGVmdHN1bT1sZWZ0c3VtK251bXNbaV07CmlmKGxlZnRzdW0+bWF4bGVmdHN1bSkKewptYXhsZWZ0c3VtPWxlZnRzdW07Cn0KfQpmb3IoaW50IGk9bWlkKzE7aTw9cmlnaHQ7aSsrKQp7CnJpZ2h0c3VtPXJpZ2h0c3VtK251bXNbaV07CmlmKHJpZ2h0c3VtPm1heHJpZ2h0c3VtKQp7Cm1heHJpZ2h0c3VtPXJpZ2h0c3VtOwp9Cn0KcmV0dXJuIG1heGxlZnRzdW0rbWF4cmlnaHRzdW07Cn0KaW50IE1heHN1YmFycmF5c3VtKHZlY3RvcjxpbnQ+Jm51bXMsaW50IGxlZnQsaW50IHJpZ2h0KQp7CmlmKGxlZnQ9PXJpZ2h0KQp7CnJldHVybiBudW1zW2xlZnRdOwp9CmludCBtaWQ9KGxlZnQrcmlnaHQpLzI7CmludCBsZWZ0cGFydD1NYXhzdWJhcnJheXN1bShudW1zLGxlZnQsbWlkKTsKaW50IHJpZ2h0cGFydD1NYXhzdWJhcnJheXN1bShudW1zLG1pZCsxLHJpZ2h0KTsKaW50IENyb3NzaW5nbWF4c3VtPUNyb3NzbWF4c3VtKG51bXMsbGVmdCxtaWQscmlnaHQpOwpyZXR1cm4gbWF4KGxlZnRwYXJ0LG1heChyaWdodHBhcnQsQ3Jvc3NpbmdtYXhzdW0pKTsKfQppbnQgbWFpbigpCnsKaW50IG47CmNpbj4+bjsKdmVjdG9yPGludD5udW1zOwpmb3IoaW50IGk9MDtpPG47aSsrKQp7CmludCB4OwpjaW4+Png7Cm51bXMucHVzaF9iYWNrKHgpOwp9CmludCBtYXhzdWJhcnJheXN1bT1NYXhzdWJhcnJheXN1bShudW1zLDAsbi0xKTsKY291dDw8bWF4c3ViYXJyYXlzdW08PGVuZGw7Cn0K