#include <bits/stdc++.h>
#define MAX 100000+10
#define INF 100000000
using namespace std;
int a[MAX],c[MAX],len;
int main()
{
int n,j;
while(scanf("%d",&n)!=EOF)
{
for(int i=0; i<n; i++)
scanf("%d",&a[i]);
len=0;
c[0]=-INF;
for(int i=0; i<n; i++)
{
if(a[i]>c[len]) j=++len;
else j= lower_bound(c,c+len,a[i]) - c;
c[j]=a[i];
}
printf("%d\n",len);
}
}