#include <bits/stdc++.h>
#define REP(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;
template<class T>inline bool chmax(T &a, const T &b){if(a < b){a = b; return 1;}return 0;}
template<class T>inline bool chmin(T &a, const T &b){if(a > b){a = b; return 1;}return 0;}
typedef long long ll;

int main(){
  ios::sync_with_stdio(false);
  cin.tie(0);
  // 「累積和」と、一つ手前までの「累積和の最小値」の差が、最大となるものを探索する
  vector<int> res;
  while(1){
    int n; cin >> n;
    if(n == 0) break;
    vector<int> a(n, 0);
    vector<int> b(n, 0);
    int c = 0, ans = -1e9;
    REP(i, n){
      cin >> a[i];
      if(i){
        b[i] = b[i-1] + a[i];
        c = min(c, b[i-1]);
        ans = max(ans, b[i] - c);
      }else{
        b[i] = a[i];
        ans = max(ans, b[i]);
      }
    }
    res.push_back(ans);
  }
  for(auto &i : res){
    cout << i << endl;
  }
}
