#include<iostream>
using namespace std;
int init = [] {
cin.tie(nullptr)->sync_with_stdio(false);
return 0;
}();
typedef long long LL;
const LL inf = -3e18;
const int MAXN = 2e5 + 5;
LL l_max[MAXN], r_max[MAXN];
LL l_min[MAXN], r_min[MAXN];
LL arr[MAXN];
int main() {
LL n, sum = 0;
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> arr[i];
sum += arr[i];
}
for (int i = 0; i <= n; ++i) {
l_max[i] = inf, l_min[i] = -inf;
r_max[i] = inf, r_min[i] = -inf;
}
LL f_max_l = inf, f_max_r = inf;
LL f_min_l = -inf, f_min_r = -inf;
for (int i = 2; i <= n; ++i) {
f_max_l = max(f_max_l, (LL)0) + arr[i - 1];
l_max[i] = max(l_max[i], f_max_l);
f_min_l = min(f_min_l, (LL)0) + arr[i - 1];
l_min[i] = min(l_min[i - 1], f_min_l);
}
for (int i = n - 1; i >= 1; --i) {
f_max_r = max(f_max_r, (LL)0) + arr[i + 1];
r_max[i] = max(r_max[i], f_max_r);
f_min_r = min(f_min_r, (LL)0) + arr[i + 1];
r_min[i] = min(r_min[i + 1], f_min_r);
}
LL ans = inf, res = -inf;
for (int i = 1; i <= n; ++i) {
ans = max(ans, l_max[i] + r_max[i]);
}
cout << max(ans, sum - res_min) << endl;
return 0;
}