#include <bits/stdc++.h>
using namespace std;
long long INIT = 1000000000000000L;
long long N;
long long A[100000];
char op[100000];
long long dp[100000][3];
long long func(long long n, long long o) {
  if (dp[n][o] < INIT) {
    return dp[n][o];
  }
  long long res;
  if (n == N - 1) {
    if (o % 2 == 0) {
      res = A[n];
    } else {
      res = -A[n];
    }
  } else {
    if (op[n + 1] == '+') {
      if (o == 0) {
        res = A[n] + func(n, o);
      } else if (o == 1) {
        long long d1 = -A[n] + func(n + 1, o);
        long long d2 = -A[n] + func(n + 1, o - 1);
        res = (((d1) > (d2)) ? (d1) : (d2));
      } else if (o == 2) {
        long long d1 = A[n] + func(n + 1, o);
        long long d2 = A[n] + func(n + 1, o - 1);
        long long d3 = A[n] + func(n + 1, o - 2);
        res = (((d1) > ((((d2) > (d3)) ? (d2) : (d3))))
                   ? (d1)
                   : ((((d2) > (d3)) ? (d2) : (d3))));
      }
    } else {
      if (o == 0) {
        res = A[n] + func(n + 1, o + 1);
      } else if (o == 1) {
        long long d1 = -A[n] + func(n + 1, o + 1);
        long long d2 = -A[n] + func(n + 1, o);
        res = (((d1) > (d2)) ? (d1) : (d2));
      } else if (o == 2) {
        long long d1 = A[n] + func(n + 1, o);
        long long d2 = A[n] + func(n + 1, o - 1);
        res = (((d1) > (d2)) ? (d1) : (d2));
      }
    }
  }
  dp[n][o] = res;
  return res;
}
signed main() {
  cin >> N;
  op[0] = '+';
  for (long long i = 0; i < N; i++) {
    if (i > 0) {
      cin >> op[i];
    }
    cin >> A[i];
    for (long long j = 0; j < 3; j++) dp[i][j] = INIT;
  }
  cout << func(0, 0) << endl;
}
