#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
	vector <vector<int> > v;
    int n;
    cin>>n;
	for(int i=0; i<n; i++)
	{
		int num;
		cin>>num;
		int pos = -1;
		int min = 1e9;
		for(int j=0;j<v.size();j++)
		{
			if(num<=v[j][v[j].size()-1] && v[j][v[j].size()-1]<min)
			{
			    min = v[j][v[j].size()-1];
				pos = j;
			}

		}
		if(pos == -1)
		{
			vector <int> a;
			a.push_back(num);
			v.push_back(a);
		} 
		else
		{
			v[pos].push_back(num);
		}   
	}
	
	cout<<v.size();
	return 0;
}
/**************************************************************
	Problem: 1771
	User: admin
	Language: C++
	Result: Accepted
	Time:5 ms
	Memory:2076 kb
****************************************************************/