
#include<iostream>
using namespace std;
#define MAX 10001
int main()
{
int n,a[MAX],x,len,i,k1,k2,mid;
while(scanf("%d",&n)!=EOF&&n>0)
{
scanf("%d",&x);
len=1; a[len]=x;
for(i=1;i<n;i++)
{
scanf("%d",&x);
if(x>=a[len])
{
len++;
a[len]=x;
}
else
{
k1=0,k2=len;
while(k2-k1>1)
{
mid=(k1+k2)/2;
if(a[mid]>=x) k2=mid;
else k1=mid;
}
a[k2]=x;
}
}
printf("%d\n",len);
}
return 0;
}
using namespace std;
#define MAX 10001
int main()
{
int n,a[MAX],x,len,i,k1,k2,mid;
while(scanf("%d",&n)!=EOF&&n>0)
{
scanf("%d",&x);
len=1; a[len]=x;
for(i=1;i<n;i++)
{
scanf("%d",&x);
if(x>=a[len])
{
len++;
a[len]=x;
}
else
{
k1=0,k2=len;
while(k2-k1>1)
{
mid=(k1+k2)/2;
if(a[mid]>=x) k2=mid;
else k1=mid;
}
a[k2]=x;
}
}
printf("%d\n",len);
}
return 0;
}