#define _CRT_SECURE_NO_WARNINGS 1
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
typedef long long ll;
ll N;
ll pre[1000009];
ll min_pre[1000009];
ll back[1000009];
ll min_back[1000009];
ll dp1[1000009];
ll dp2[1000009];
int main()
{
ll ans = -0x7FFFFFFFFFFFFFFF;
scanf("%lld", &N);
for (int i = 1; i <= N; i++) {
scanf("%lld", pre + i);
pre[i] += pre[i - 1];
min_pre[i] = pre[i];
min_pre[i] = min(min_pre[i], min_pre[i - 1]);
}
for (int i = N; i; --i) {
back[i] = pre[i] - pre[i - 1];
back[i] += back[i + 1];
min_back[i] = back[i];
min_back[i] = min(min_back[i], min_back[i + 1]);
}
for (int i = 1; i <= N; i++) {
dp1[i] = pre[i] - min_pre[i - 1];
dp1[i]=max(dp1[i],dp1[i-1]);
}
for (int i = 1; i <= N; i++) {
dp2[i] = back[i] - min_back[i + 1];
dp2[i]=max(dp2[i],dp2[i+1]);
}
for (int i = 2; i < N; i++) {
ans = max(ans, dp1[i - 1] + dp2[i + 1]);
}
printf("%lld", ans);
}