#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,a[N],f[N],g[N],len=1,ans;
int main()
{
while(scanf("%d",&a[++n])) if(cin.get()=='\n') break;
memset(f,0x3f,sizeof(f));f[1]=a[1];
for(int i=2;i<=n;i++){
int l=0,r=len,mid;
if(a[i]<=f[len]){
f[++len]=a[i];
}else{
while(l<r){
mid=(l+r)/2;
if(a[i]>f[mid]) r=mid;
else l=mid+1;
}
f[l]=max(f[l],a[i]);
}
}printf("%d\n",len);
memset(f,0,sizeof(f));f[1]=a[1];len=1;
for(int i=2;i<=n;i++){
int l=0,r=len,mid;
if(a[i]>f[len]){
f[++len]=a[i];
}else{
while(l<r){
mid=(l+r)/2;
if(a[i]<=f[mid]) r=mid;
else l=mid+1;
}
f[l]=min(a[i],f[l]);
}
}printf("%d\n",len);
return 0;
}