#include<bits/stdc++.h>
using namespace std;
int a[100010];
int dp[100010];
int n;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	dp[0]=a[1];
	int len=1;
	for(int i=2;i<=n;i++){
		if(a[i]>dp[len-1]){
			dp[len++]=a[i];
		}
		else{
			*lower_bound(dp,dp+len,a[i])=a[i];
		}
	}
	cout<<len<<endl;
	return 0;
} 

