#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    int * max_sum_map = NULL;    
    
    unsigned int receive_len = 0;
    int max_sum = 0;
    int max_sum_temp = 0;

    scanf("%d", &receive_len);
    max_sum_map = calloc(receive_len+1, sizeof(int));
    if(NULL == max_sum_map)
    {
        printf("malloc error!!\n");
        return 0;
    }
    scanf("%d ", &max_sum_map[0]);
    max_sum_temp = max_sum_map[0];
    max_sum = max_sum_temp;
    for(unsigned int i=1; i<receive_len; i++)
    {
        scanf("%d ", &max_sum_map[i]);
        if((max_sum_temp+max_sum_map[i]) >= max_sum_map[i])
        {
            max_sum_temp += max_sum_map[i];
           
            if(max_sum < max_sum_temp)
                max_sum = max_sum_temp;
        }
        else
        {
            max_sum_temp = max_sum_map[i];
            if(max_sum_map[i] > max_sum)
                max_sum = max_sum_map[i];
        }
        
    }
    printf("%d", max_sum);
    return 0;
}