#include <climits>
#include <iostream>
#include <cstring>

using namespace std;


const int N = 1000010;

long long dp[N];
long long A[N];
/* dp[i]表示以i结尾的最大子序列和
   dp[i]=A[i] or dp[i]=A[j]+A[j+1]+....+A[i-1]+A[i]
                      =dp[i-1]+A[i]

*/


int main() {

    int n;
    while (cin >> n) {
        dp[0]=0;
        for (int i = 1; i <= n; i++) {
            cin >> A[i];
        }
        for (int i = 1; i <= n; i++) {
            dp[i] = max(dp[i - 1] + A[i], A[i]);

        }
        long long ans = INT_MIN;
        for (int i = 1; i <= n; i++) {
            ans = max(ans, dp[i]);
        }
        cout << ans << endl;
    }

    return 0;
}