#include <bits/stdc++.h>
using namespace std;

int main(){
	int n;
	cin >> n;
    vector<int> dp(1);
    cin >> dp[0];
    for(int i=1; i<n; i++){
        int tmp;
        cin >> tmp;
        auto itr=lower_bound(dp.begin(),dp.end(),tmp);
        if(itr!=dp.end()) *itr=tmp;
        else dp.push_back(tmp);
    }
    
    cout << dp.size() << endl;
}
