// longest increasing subsequence, jobdu-1480
// ac.jobdu.com/problem.php?pid=1480
#include <stdio.h>
#define N 1000
int n;
int b[N];
int s[N], x[N];
//s[n] : 包含b[n]的最大上升子序列的和
//x[n] : s[n]对应的子序列中,b[n]的前一个元素的下标
int lis()
{
int k, i, tmp, max;
s[0] = b[0];
x[0] = -1;
for(k = 1; k < n; k++){
s[k] = b[k];
x[k] = -1;
for(i = k-1; i >= 0; i--)
if(b[i] < b[k]){
tmp = s[i] + b[k];
if(tmp > s[k]){
s[k] = tmp;
x[k] = i;
}
}
}
max = 0;
for(i = 1; i < n; i++){
if(s[i] > s[max])
max = i;
}
return s[max];
}
int main(int argc, char **argv)
{
int i;
while(scanf("%d", &n) != EOF){
for(i = 0; i < n; i++)
scanf("%d", &b[i]);
printf("%d\n", lis());
}
return 0;
}