#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+1;
int s[maxn];
int height[maxn];
int main()
{
int x;
int num=0;
do{
scanf("%d",&x);
height[++num]=x;
}while(getchar()!='\n');
int pos=0;
for(int i=1;i<=num;i++)
{
if(!pos)
{
s[++pos]=height[i];
}
else
{
if(height[i]<=s[pos])
{
s[++pos]=height[i];
}
else
{
int low=1,high=pos;
while(low<high)
{
int mid=(low+high)/2;
if(s[mid]<height[i])
high=mid;
else
low=mid+1;
}
s[low]=height[i];
}
}
}
cout<<pos<<endl;
pos=0;
for(int i=1;i<=num;i++)
{
if(!pos)
{
s[++pos]=height[i];
}
else
{
if(height[i]>s[pos])
{
s[++pos]=height[i];
}
else
{
int low=1,high=pos;
while(low<high)
{
int mid=(low+high)/2;
if(s[mid]<height[i])
low=mid+1;
else
high=mid;
}
s[low]=height[i];
}
}
}
cout<<pos<<endl;
return 0;
}