#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=1000000;
int arr[MAXN];
int f(int n)
{
int answer;
if(n==1)
{
answer = arr[n];
}
else{
answer=max(arr[n]+f(n-1),arr[n]);
}
return answer;
}
int main()
{
int n;
while(cin>>n)
{
for(int i=1;i<=n;i++)
{
cin>>arr[i];
}
int maxnum =arr[1];
for(int i=2;i<=n;i++)
{
maxnum=max(maxnum,f(i));
}
cout<<maxnum<<endl;
}
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=1000000;
int arr[MAXN];
int memo[MAXN];
#include<climits>
int f(int n)
{
int answer;
if(memo[n]!=-INT_MAX)
answer=memo[n];
else
{
if(n==1)
{
answer = arr[n];
}
else{
answer=max(arr[n]+f(n-1),arr[n]);
}
memo[n]=answer;
}
return answer;
}
int main()
{
int n;
while(cin>>n)
{
fill(memo,memo+n+1,-INT_MAX);
for(int i=1;i<=n;i++)
{
cin>>arr[i];
}
int maxnum =arr[1];
for(int i=2;i<=n;i++)
{
maxnum=max(maxnum,f(i));
}
cout<<maxnum<<endl;
}
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=1000000;
int arr[MAXN];
int dp[MAXN];
#include<climits>
void f(int n)
{
dp[1]=arr[1];
for(int i=2;i<=n;i++)
{
dp[i]=max(dp[i-1]+arr[i],arr[i]);
}
}
int main()
{
int n;
while(cin>>n)
{
for(int i=1;i<=n;i++)
{
cin>>arr[i];
}
f(n);
int maxnum =dp[1];
for(int i=2;i<=n;i++)
{
maxnum=max(maxnum,dp[i]);
}
cout<<maxnum<<endl;
}
return 0;
}