/*
dp[i][j]表示以i结尾,前段最大值j
*/
#include<bits/stdc++.h>
using namespace std;
#define N 200005
#define B 30
int n,a[N],dp[N][100];
int main(){
cin>>n;
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
memset(dp,-0x3f,sizeof dp);
dp[1][a[1]+B]=0;
int ans=0;
for(int i=2;i<=n;i++){
dp[i][a[i]+B]=0;
for(int j=0;j<=60;j++)if(dp[i-1][j]!=-0x3f3f3f3f){
if(j<=a[i]+B)//删a[i]
dp[i][a[i]+B]=max(dp[i][a[i]+B],dp[i-1][j]+j-B);
else//删j
dp[i][j]=max(dp[i][j],dp[i-1][j]+a[i]);
}
}
for(int i=1;i<=n;i++)
for(int j=0;j<=60;j++)
ans=max(ans,dp[i][j]);
cout<<ans<<'\n';
}