#include<bits/stdc++.h>
using namespace std;
const int INF = 1e8;
int main() {
	
	int n;
	cin >> n;
	vector<int> l,a(n);
	for(int i=0; i<n; i++) cin >> a.at(i); 
	for(int i=0; i<n; i++){
		if(i==0) l.push_back(a.at(i));
		else {
			if(l.back()<a.at(i)) l.push_back(a.at(i));
			else{
				auto it = lower_bound(l.begin(),l.end(),a.at(i));
				*it = a.at(i);
			}
		}
		
	}
	cout << l.size() << endl;
	
}
