#include<bits/stdc++.h>
using namespace std;
int CrossingMaxSum(vector <int>& nums, int left, int mid, int right)
{
int maxLeftSum = -1000000000, maxRightSum = -1000000000;
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 MaxSubSum(vector <int>& nums, int left, int right)
{
if(left == right)
{
return nums[left];
}
int mid = (left+right)/2;
int leftPart = MaxSubSum(nums,left,mid);
int rightPart = MaxSubSum(nums,mid+1,right);
int crossingMaxSum = CrossingMaxSum(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 maxSubSum = MaxSubSum(nums,0,n-1);
cout<<maxSubSum<<endl;
}
//13
//-3 2 1 2 -6 3 5 -2 7 -3 2 -1 2
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgQ3Jvc3NpbmdNYXhTdW0odmVjdG9yIDxpbnQ+JiBudW1zLCBpbnQgbGVmdCwgaW50IG1pZCwgaW50IHJpZ2h0KQp7CiAgICBpbnQgbWF4TGVmdFN1bSA9IC0xMDAwMDAwMDAwLCBtYXhSaWdodFN1bSA9IC0xMDAwMDAwMDAwOwogICAgaW50IGxlZnRTdW0gPSAwLCByaWdodFN1bSA9IDA7CiAgICBmb3IoaW50IGk9bWlkO2k+PWxlZnQ7aS0tKQogICAgewogICAgICAgIGxlZnRTdW0gPSBsZWZ0U3VtICsgbnVtc1tpXTsKICAgICAgICBpZihsZWZ0U3VtID4gbWF4TGVmdFN1bSkKICAgICAgICAgICAgbWF4TGVmdFN1bSA9IGxlZnRTdW07CiAgICB9CiAgICBmb3IoaW50IGk9bWlkKzE7aTw9cmlnaHQ7aSsrKQogICAgewogICAgICAgIHJpZ2h0U3VtID0gcmlnaHRTdW0gKyBudW1zW2ldOwogICAgICAgIGlmKHJpZ2h0U3VtID4gbWF4UmlnaHRTdW0pCiAgICAgICAgICAgIG1heFJpZ2h0U3VtID0gcmlnaHRTdW07CiAgICB9CiAgICByZXR1cm4gbWF4TGVmdFN1bSArIG1heFJpZ2h0U3VtOwp9CgppbnQgTWF4U3ViU3VtKHZlY3RvciA8aW50PiYgbnVtcywgaW50IGxlZnQsIGludCByaWdodCkKewogICAgaWYobGVmdCA9PSByaWdodCkKICAgIHsKICAgICAgICByZXR1cm4gbnVtc1tsZWZ0XTsKICAgIH0KICAgIGludCBtaWQgPSAobGVmdCtyaWdodCkvMjsKICAgIGludCBsZWZ0UGFydCA9IE1heFN1YlN1bShudW1zLGxlZnQsbWlkKTsKICAgIGludCByaWdodFBhcnQgPSBNYXhTdWJTdW0obnVtcyxtaWQrMSxyaWdodCk7CiAgICBpbnQgY3Jvc3NpbmdNYXhTdW0gPSBDcm9zc2luZ01heFN1bShudW1zLGxlZnQsbWlkLHJpZ2h0KTsKICAgIHJldHVybiBtYXgobGVmdFBhcnQsIG1heChyaWdodFBhcnQsIGNyb3NzaW5nTWF4U3VtKSk7Cn0KCmludCBtYWluKCkKewogICAgaW50IG47CiAgICBjaW4+Pm47CiAgICB2ZWN0b3IgPGludD4gbnVtczsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICB7CiAgICAgICAgaW50IHg7CiAgICAgICAgY2luPj54OwogICAgICAgIG51bXMucHVzaF9iYWNrKHgpOwogICAgfQogICAgaW50IG1heFN1YlN1bSA9IE1heFN1YlN1bShudW1zLDAsbi0xKTsKICAgIGNvdXQ8PG1heFN1YlN1bTw8ZW5kbDsKfQoKLy8xMwovLy0zIDIgMSAyIC02IDMgNSAtMiA3IC0zIDIgLTEgMg==