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

int main() {

	int n;
	cin>>n;
	
	int a[n];
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}

	multiset<int> towers;
	multiset<int>::iterator it;
	for(int i=0;i<n;i++)
	{
		it = towers.upper_bound(a[i]);
		if(it == towers.end())
		{
			towers.insert(a[i]);
		}
		else
		{
			towers.erase(it);
			towers.insert(a[i]);
		}
	}


	cout<<towers.size()<<endl;

	return 0;
}