#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
vector<int>v(n);
for(int i=0;i<n;i++) cin>>v[i];
vector<int>temp;
temp.push_back(v[0]);
for(int i=1;i<n;i++)
{
if(v[i]>=temp[temp.size()-1])
temp.push_back(v[i]);
else
{
int t=upper_bound(temp.begin(),temp.end(),v[i])-temp.begin();
temp[t]=v[i];
}
}
// for(auto i:temp) cout<<i<<" ";
cout<<temp.size();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWludCBuOwoJY2luPj5uOwoJdmVjdG9yPGludD52KG4pOwoJZm9yKGludCBpPTA7aTxuO2krKykJY2luPj52W2ldOwoJdmVjdG9yPGludD50ZW1wOwoJdGVtcC5wdXNoX2JhY2sodlswXSk7Cglmb3IoaW50IGk9MTtpPG47aSsrKQoJewoJCWlmKHZbaV0+PXRlbXBbdGVtcC5zaXplKCktMV0pCgkJCXRlbXAucHVzaF9iYWNrKHZbaV0pOwoJCWVsc2UgCgkJewoJCQlpbnQgdD11cHBlcl9ib3VuZCh0ZW1wLmJlZ2luKCksdGVtcC5lbmQoKSx2W2ldKS10ZW1wLmJlZ2luKCk7CgkJCXRlbXBbdF09dltpXTsKCQl9Cgl9Ci8vCWZvcihhdXRvIGk6dGVtcCkJY291dDw8aTw8IiAiOwoJY291dDw8dGVtcC5zaXplKCk7CglyZXR1cm4gMDsKfQ==