#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int data[100010];
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
int res = 1;
for(int i = 0; i < n; i++)
{
scanf("%d", &data[i]);
int *pos = lower_bound(data, data + res, data[i]);
if(res == pos - data)
res++;
*pos = data[i];
}
cout<<res<<endl;
}
return 0;
}