#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
const long long inf = 1e18;
long long a[N];
long long f[N][2];
inline void Updmax(long long &x, long long y) { x = (x <= y) ? y : x; }
int main() {
  int m = 0;
  long long tot = 0;
  int n;
  scanf("%d", &n);
  for (int i = (1); i <= (n - 1); i++) {
    char s[4];
    int x;
    scanf("%d%s", &x, s + 1);
    tot += x;
    if (s[1] == '-') {
      a[++m] = tot;
      tot = 0;
    }
  }
  int w;
  scanf("%d", &w);
  tot += w;
  a[++m] = tot;
  n = m;
  f[1][1] = -inf;
  for (int i = (0); i <= (n); i++)
    for (int j = (0); j <= (1); j++) f[i][j] = -inf;
  f[1][0] = a[1];
  for (int i = (1); i <= (n - 1); i++) {
    Updmax(f[i + 1][0], f[i][0] - a[i + 1]);
    Updmax(f[i + 1][1], f[i][0] - a[i + 1]);
    Updmax(f[i + 1][1], f[i][1] + a[i + 1]);
    Updmax(f[i + 1][0], f[i][1] + a[i + 1]);
  }
  printf("%lld\n", max(f[n][0], f[n][1]));
  return 0;
}
