#include <iostream>
using namespace std;
long long a[1000001];
long long dp[1000001];
long long maxsubsequence(int n) {
long long maxinum = -INT32_MAX;
for (int i = 0; i < n; i++) {
if (i == 0) {
dp[i] = a[i]; //只有一个元素,必然是最大连续子序列
} else {
dp[i] = max(a[i], a[i] + dp[i - 1]);
}
if (dp[i] > maxinum) {
maxinum = dp[i];
}
}
return maxinum;
}
int main() {
int n;
while (scanf("%d", &n) != EOF) {
for (int i = 0; i < n; i++) {
scanf("%lld", &a[i]);
}
long long ans = maxsubsequence(n);
printf("%lld\n", ans);
}
return 0;
}