#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int a[50005];
long long dp[50005];
int main()
{
memset(a,0,sizeof(a));
memset(dp,0,sizeof(dp));
int n;
scanf("%d",&n);
int flag=1;
int i;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]>=0)
flag=0;
}
if(flag)
{
printf("0");
return 0;
}
dp[0]=a[0];
for(i=1;i<n;i++)
{
if(dp[i-1]>0)
dp[i]=dp[i-1]+a[i];
else
dp[i]=a[i];
}
long long res=0;
for(i=0;i<n;i++)
res=max(res,dp[i]);
printf("%lld",res);
return 0;
}
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
long long ans=0,maxn=0;
int i,n,x;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&x);
maxn+=x;
if(maxn<0)
maxn=0;
ans=max(ans,maxn);
}
printf("%lld",ans);
return 0;
}