#include <bits/stdc++.h>
using namespace std;
int32_t main(){
  const int32_t INF=1<<30;
  int32_t n; cin>>n;
  vector<int32_t> a(n);
  for(auto&& x:a) cin>>x;
  vector<int32_t> dp(n,INF);
  for(const auto& x:a) *lower_bound(begin(dp),end(dp),x)=x;
  cout<<(lower_bound(begin(dp),end(dp),INF)-begin(dp))<<endl;
}
