#include<bits/stdc++.h>
using namespace std;
const int INF = 0 , INT= 1 , maxs=1000010 ;
long long que[maxs] , tail =INT;
long long A[maxs],N=INT;
long long vis[maxs],M;
long long len1,len2;//最长不上升子序列和最长单调上升子序列
int main(){
while(cin>>A[N]){ N++; }N--;
for(int i=1;i<=N;i++){
while(tail > INT && A[i] > A[que[tail-1]]){ vis[que[tail-1]]=INF;M--;tail--; }
que[tail++]=i;vis[i]=INT;M++;
} len1=M;len2++;//求最长不上升子序列并将最长单调上升子序列++
while(M!=N){
tail=INT;
for(int i=1;i<=N;i++){
if(vis[i]==INT) continue;
while(tail > INT && A[i] > A[que[tail-1]]){vis[que[tail-1]]=INF;M--;tail--; }
que[tail++]=i;vis[i]=INT;M++;
} len2++;//求最长单调上升子序列直到所有导弹都被拦截
}cout<<len1<<' '<<len2<<endl;//输出
return 0;
}