#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
long getMax(long a,long b){
return a > b ? a : b;
}
int main(){
// 连续子数组的最大和! 典型dp !
int n;
cin>>n;
vector<int> arr(n);
for(int i = 0; i < n; i++) cin>>arr[i];
long max_sum = arr[0] /*最大值*/,sum = arr[0];/*零时最大值*/
for(int i = 1; i < n; i++){
sum = getMax(sum + arr[i],arr[i]);
if(sum > max_sum){
max_sum = sum;
}
}
cout<<max_sum<<endl;
return 0;
}