#include <bits/stdc++.h>
using namespace std;
template <class T>
void chmin(T &t, T f) {
  if (t > f) t = f;
}
template <class T>
void chmax(T &t, T f) {
  if (t < f) t = f;
}
int n;
long long a[100010];
char op[100010];
long long dp[100010][3];
void init() {}
void input() {
  cin >> n;
  for (int i = (0); i < (n); i++) {
    cin >> a[i];
    if (i < n - 1) cin >> op[i + 1];
  }
}
void solve() {
  for (int i = (0); i < (100010); i++)
    for (int j = (0); j < (3); j++) dp[i][j] = -(1LL << 60);
  dp[0][0] = a[0];
  for (int i = (1); i < (n); i++) {
    if (op[i] == '+') {
      chmax(dp[i][0], max({dp[i - 1][0] + a[i], dp[i - 1][1] + a[i],
                           dp[i - 1][2] + a[i]}));
      chmax(dp[i][1], max({dp[i - 1][1] - a[i], dp[i - 1][2] - a[i]}));
      chmax(dp[i][2], max({dp[i - 1][2] + a[i]}));
    } else {
      chmax(dp[i][0], max({dp[i - 1][0] - a[i], dp[i - 1][1] - a[i],
                           dp[i - 1][2] - a[i]}));
      chmax(dp[i][1], max({dp[i - 1][0] - a[i], dp[i - 1][1] + a[i],
                           dp[i - 1][2] + a[i]}));
      chmax(dp[i][2], max({dp[i - 1][1] + a[i], dp[i - 1][2] - a[i]}));
    }
  }
  cout << max({dp[n - 1][0], dp[n - 1][1], dp[n - 1][2]}) << endl;
}
int main() {
  init();
  input();
  solve();
  return 0;
}
