#include<iostream>
using namespace std;
int n;
int a[1005];
int s[1005];
void m()
{
for(int i=1;i<=n;i++)
s[i]=a[i];//s[i]存储以i结尾的最长上升子序列的最大和
for(int i=1;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(a[j]<a[i] && s[j]+a[i]>s[i])
{
s[i]=s[j]+a[i];
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
m();
int chossnum=0;
for(int i=1;i<=n;i++)
{
if(s[i]>chossnum)
chossnum=s[i];
}
cout<<chossnum<<endl;
return 0;
}
using namespace std;
int n;
int a[1005];
int s[1005];
void m()
{
for(int i=1;i<=n;i++)
s[i]=a[i];//s[i]存储以i结尾的最长上升子序列的最大和
for(int i=1;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(a[j]<a[i] && s[j]+a[i]>s[i])
{
s[i]=s[j]+a[i];
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
m();
int chossnum=0;
for(int i=1;i<=n;i++)
{
if(s[i]>chossnum)
chossnum=s[i];
}
cout<<chossnum<<endl;
return 0;
}
#include<iostream>
using namespace std;
int n;
int a[1000];
int b[1000];
int m()
{
int max=0;
for(int i=1;i<=n;i++)
b[i]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(a[i]>a[j] && b[i]<b[j]+1)
b[i]=b[j]+1;
}
if(max<b[i])
max=b[i];
}
return max;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
cout<<m()<<endl;
}