#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int arr[maxn],dp[maxn],n;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d",&arr[i]);
int tot=1;
dp[tot]=arr[1];
for(int i=2;i<=n;++i){
if(arr[i]>dp[tot]) dp[++tot]=arr[i];
else dp[lower_bound(dp+1,dp+tot+1,arr[i])-dp]=arr[i];
}
printf("%d\n",tot);
system("pasue");
}