rt
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int NR=0x3ffff,N=2e5+5;
int n,qian[N],hou[N],a[N],sum=0,tot=0,i,j,res,lin;
int main()
{
cin>>n;
memset(qian,0,sizeof(qian));
memset(hou,0,sizeof(hou));
for(i=1;i<=n;i++)
{
cin>>a[i];
sum+=a[i];
tot+=a[i]>0;
}
for(i=1;i<=n;i++)
qian[i]=max(qian[i-1],0)+a[i];
for(i=n;i>0;i--)
hou[i]=max(hou[i+1],0)+a[i];
for(i=1;i<=n;i++)
qian[i]=max(qian[i-1],qian[i]);
for(i=n;i>0;i--)
hou[i]=max(hou[i+1],hou[i]);
for(i=1;i<n;i++)
res=max(res,qian[i]+hou[i+1]);
lin=res;
if (tot==1)
{
cout<<res;
}
else
{
memset(qian,0,sizeof(qian));
memset(hou,0,sizeof(hou));
for(i=1;i<=n;i++)
a[i]=-a[i];
for(i=1;i<=n;i++)
qian[i]=max(qian[i-1],0)+a[i];
for(i=n;i>0;i--)
hou[i]=max(hou[i+1],0)+a[i];
for(i=1;i<=n;i++)
qian[i]=max(qian[i-1],qian[i]);
for(i=n;i>0;i--)
hou[i]=max(hou[i+1],hou[i]);
for(i=1;i<n;i++)
res=max(res,qian[i]+hou[i+1]);
res+=sum;
if(!res)
res=-NR;
cout<<max(lin,res);
}
return 0;
}