#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int n,x,d[100010],i,j,len;
int main()
{
n=1;
int * a=(int *)malloc(n * sizeof(int));
while(scanf("%d",&x))
{
a=(int *)realloc(a,n * sizeof(int));
a[n]=x;
n++;
}
--n;
for(i=1; i<=n; i++)
d[i]=0;
len=1;
d[len]=a[1];
for(i=1; i<=n; i++)
{
if(a[i]<=d[len])
d[++len]=a[i];
else{
int l=1,r=i;
while(l<r)
{
int mid=(l+r)/2;
if(d[mid]<a[i])r=mid;
else l=mid+1;
}
d[l]=a[i];
}
}
printf("%d\n",len);
memset(d,0,sizeof(d));
len=1;
d[len]=a[1];
for(i=2; i<=n; i++)
{
if(a[i]>d[len])
d[++len]=a[i];
int l=1,r=len;
while(l<r)
{
int mid=(l+r)/2;
if(d[mid]>=a[i])r=mid;
else l=mid+1;
}
d[l]=a[i];
}
printf("%d\n",len);
return 0;
}