#include<bits/stdc++.h>
using namespace std;
#define INF 0x7FFFFFFF

int main(){
    int n;
    cin >> n;
    vector<long long> a(n);
    for(int i=0 ; i < n ; i++) cin >> a[i];
    vector<int> dp(n,INF);
    for(int i = 0; i < n ; i++)
        *lower_bound(dp.begin(),dp.end(),a[i]) = a[i];
    cout << lower_bound(dp.begin(),dp.end(),INF) - dp.begin() << endl;
    return 0;
}
