#include<iostream>
#include<algorithm>
using namespace std;

int ans[100001];
int n;

int main(){
    int a;
    int length=0;
    int num[100001];
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>num[i];
    }
    ans[0]=num[0];
    length=1;
    for(int i=1;i<n;i++){
        if(num[i]>ans[length-1]){
            ans[length++]=num[i];
        }else{
            *lower_bound(ans,ans+length,num[i])=num[i];
        }
    }
    cout<<length<<endl;
}

