#include <bits/stdc++.h>
#define ll long long
#define Max 10000007
#define Min -10000000000000007
using namespace std;
int n;
ll a[Max];
ll sum;
ll ans1=Min,ans2,ans3=Min;
ll f[Max];
ll g[Max];
//1 2 3 4 5
//sum=1 ans=1 f[2]=1 | 1
//sum=3 ans=3 f[3]=3 | 1 2
//sum=6 ans=6 f[4]=6 | 1 2 3
//-------
//sum=3 ans=3 g[2]=3 | 3
//sum=7 ans=7 g[3]=7 | 3 4
//sum=12 ans=12 g[4]=12 | 3 4 5
//-------
//1 3 | 1 2 3
//1 2 3 4 | 1 2 3 4
//1 2 3 3 4 5 | 1 2 3 4 5
//1 2 3 4 5 3 4 5 6 7 | 1 2 3 4 5 6 7
//-------
int main(){
cin>>n;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
for(int i=1;i<=n-2;i++){
if(sum<0){
sum=0;
}
sum+=a[i];
ans1=max(ans1,sum);
f[i+1]=ans1;
}
sum=0;
ans1=Min;
for(int i=3;i<=n;i++){
if (sum < 0)
{
sum = 0;
}
sum += a[i];
ans1 = max(ans1, sum);
g[i - 1] = ans1;
}
for(int i=2;i<=n-1;i++){
ans3=max(g[i]+f[i],ans3);
}
cout<<ans3;
return 0;
}
RT,出错原因是会有重叠计算,但是不知道怎样处理