#include <iostream>
#include <algorithm>
#include <string>
#include <cstdio>
using namespace std;
//最大上升子序列和
//区别于最长上升子序列,此时集合的属性为最大子序列和,即状态数组f[i]记录以a[i]结尾的
//最大上升子序列和
const int N = 1001;
int n;
int a[N], f[N];
int res() {
//处理边界
if (n == 0)return 0;
for (int i = 0; i < n; i++) f[i] = a[i];//初始化状态数组
int ma = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
if (a[j] < a[i])
f[i] = max(f[i], f[j] + a[i]);
}
}
for (int i = 0; i < n; i++) ma = max(ma, f[i]);
return ma;
}
int main() {
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
cout << res() << endl;
return 0;
}