#include<bits/stdc++.h>
using namespace std;
int a[100005],f[100005],h[10005],i=0,lh=0,lf=0;
int bin1(int x){
int l=1,r=lf,mid;
while (l<=r){
mid=l+(r-l)/2;
if (f[mid]>x) r=mid-1;
else l=mid+1;
}
return l;
}
int bin2(int x){
int l=1,r=lh,mid;
while (l<r){
mid=(l+r)/2;
if (h[mid]<x) l=mid+1;
else r=mid;
}
return r;
}
int main(){
memset(f,1e9,sizeof(f));
while (cin>>a[++i]){
int t=bin1(a[i]);
if (t==lf) f[++lf]=a[i];
else f[t]=a[i];
int a2=bin2(a[i]);
if (h[a2]<a[i]) h[++lh]=a[i];
else h[a2]=a[i];
}
cout<<lf<<'\n'<<lh;
return 0;
}