#include <bits/stdc++.h>
using namespace std;
stack<int> stiva;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,i,v[100005],m[100005],maxi,lg_max,j,j_max,t[100005],maxi_poz;
int main()
{
fin>>n;
for(i=1; i<=n; i++)
fin>>v[i];
for(i=1; i<=n; i++)
{
lg_max=0;
for(j=i-1; j>0; j--)
{
if(v[j]<v[i])
if(lg_max<m[j])
{
lg_max=m[j];
j_max=j;
}
}
m[i]=lg_max+1;
t[i]=j_max;
if(m[i]>maxi)
{
maxi=m[i];
maxi_poz=i;
}
}
fout<<maxi<<'\n';
/*j=maxi_poz;
stiva.push(v[j]);
while(t[j] != 0)
{
stiva.push(v[t[j]]);
j=t[j];
}
while(!stiva.empty())
{
i=stiva.top();
stiva.pop();
fout<<i<<' ';
}
*/
return 0;
}