#include <stdio.h>

#define N 1000000
#define MIN -1000000

int main() {
    int dp[N];  //存放加上当前元素的最大子序列和
    int num[N]={0};  //存放序列元素
    int n;
    int max;  //记录最大子序列和
    while(scanf("%d",&n)!=EOF){
        for(int i=0;i<n;i++){
            scanf("%d",&num[i]);
        }
        dp[0]=num[0];
        max=MIN;
        for(int i=1;i<n;i++){
            dp[i]=(num[i])>(num[i]+dp[i-1])?(num[i]):(num[i]+dp[i-1]);  //如果当前元素前一个的最大子序列和大于0则加上,否则不加
            if(dp[i]>max)
                max=dp[i];
        }
        printf("%d\n",max);
    }
    return 0;
}