#include <iostream>
using namespace std;
const int MAXN = 100000 + 5;
int num[MAXN],dp[MAXN],dp2[MAXN];
int main()
{
int n=0,x;
while(scanf("%d",&x)!=EOF) {
num[n++]=x;
}
int len=0,len2=0;
dp[0]=0x3fffffff;
dp2[0]=0;
for(int i=0; i<n; i++) {
if(num[i]<=dp[len])dp[++len]=num[i];
else {
int L=0,R=len;
while(L<R) {
int mid=(L+R)/2;
if(dp[mid]<num[i])R=mid;
else L=mid+1;
}
dp[R]=max(dp[R],num[i]);
}
if(num[i]>dp2[len2])dp2[++len2]=num[i];
else {
int L=0,R=len2;
while(L<R) {
int mid=(L+R)/2;
if(dp2[mid]>num[i])R=mid;
else L=mid+1;
}
dp2[L]=min(dp2[L],num[i]);
}
}
cout<<len<<endl<<len2<<endl;
return 0;
}