#include<iostream>
#include<cstring>
using namespace std;
//暴力?
int n;
int a[5005];
int maxans=0;
int mem[5005][5005];
void dfs(int num,int pos,int ans){
if(pos==n){
maxans=max(maxans,ans);
return ;
}
mem[num][pos]=max(mem[num][pos],ans);
for(int i=pos+1;i<=n;i++){
if(a[i]>num){
if(mem[a[i]][i]!=-1) continue;//只求一次,是不是没必要?
dfs(a[i],i,ans+1);
}
}
}
signed main(){
memset(mem,-1,sizeof(mem));
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
dfs(a[1],1,1);
cout<<maxans;
return 0;
}