#include<bits/stdc++.h>
#define INF 0x7fffffff
using namespace std;
const int maxn=5*1e5+5 ;
int a[maxn],f[maxn],h[maxn];
int ans1,ans2;
int n;
int n1=1;
int bss(){
f[1] = a[1];
int len = 1;
for(int i=2;i<=n1;i++){
int l=1,r=len,mid;
if(a[i] <= f[len]) f[++len] = a[i];
else{
while(r > l){
mid = (l+r) >> 1 ;
if(f[mid] < a[i]) r = mid;
else l=mid + 1;
}
f[l] = max (a[i],f[l]) ;
}
}
return len;
}
int bxj(){
h[1] = a[1];
int len = 1;
for(int i=2;i<=n1;i++){
int l = 1,r = len,mid;
if(a[i] >= h[len] ) h[++len] = a[i];
else{
while(r > l){
mid = (l+r) >> 1;
if(h[mid] > a[i]) r=mid;
else l = mid+1;
}
h[l] = min(a[i],h[l]);
}
}
return len;
}
int main(){
while(cin>>n){
a[n1] = n;
h[n1] = INF;
n1++;
}
n1-=1;
ans1 = bss();
ans2 = bxj();
cout<<ans1<<endl<<ans2<<endl;
return 0;
}