#include <bits/stdc++.h>
using namespace std;
const int N_MAX = 100000;
const long long INF = 1e15;
int N;
int A[N_MAX];
int op[N_MAX];
long long dp[N_MAX + 1][50];
void solve() {
  fill(dp[0], dp[N + 1], -INF);
  fill(dp[0], dp[1], 0);
  int m = 1;
  for (int i = 0; i < (int)(N); i++) {
    for (int j = 0; j < (int)(m); j++) {
      int k = j + op[i];
      int f = (k % 2 == 0 ? 1 : -1);
      dp[i + 1][j] = max(dp[i + 1][j], dp[i][j] + A[i] * f);
      if (op[i] > 0) {
        dp[i + 1][j + 1] = max(dp[i + 1][j + 1], dp[i][j] + A[i] * f);
      }
      if (j > 0) {
        dp[i + 1][j - 1] = max(dp[i + 1][j - 1], dp[i][j] + A[i] * -f);
      }
    }
    if (i + 1 < N) m += op[i];
  }
  long long ans = -INF;
  for (int j = 0; j < (int)(m); j++) ans = max(ans, dp[N][j]);
  printf("%lld\n", ans);
}
void input() {
  scanf("%d", &N);
  for (int i = 0; i < (int)(N); i++) {
    scanf("%d", A + i);
    if (i + 1 < N) {
      char buf[2];
      scanf("%s", buf);
      op[i + 1] = buf[0] == '-' ? 1 : 0;
    }
  }
}
int main() {
  input();
  solve();
  return 0;
}
