#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=3e5+44;
ll inf=1e14,MAX=-1e14;
int tot,idx,cnt;
int MOD=1e6+7;
//int dp[2000][4000];
int a[maxn],que[maxn];
void work(){
int n=0,res=0;
char ch=getchar();
while(ch!='\n'){
if(isdigit(ch))res=res*10+ch-'0';
else a[++n]=res,res=0;
ch=getchar();
}
a[++n]=res;
que[++cnt]=a[1];
for(int i=2;i<=n;i++){
if(a[i]<=que[cnt])que[++cnt]=a[i];
else{
int l=1,r=cnt,ans=0;
while(l<=r){
int mid=(l+r)/2;
if(que[mid]<a[i])r=mid-1,ans=mid;
else l=mid+1;
}
que[ans]=a[i];
}
}
printf("%d\n",cnt);
cnt=1;
for(int i=2;i<=n;i++){
if(a[i]>que[cnt])que[++cnt]=a[i];
else{
int l=1,r=cnt,ans=0;
while(l<=r){
int mid=(l+r)/2;
if(que[mid]>=a[i])r=mid-1,ans=mid;
else l=mid+1;
}
que[ans]=a[i];
}
}
printf("%d\n",cnt);
// for(int i=1;i<=cnt;i++)cout<<que[i]<<' ';
}
int main(){
work();
return 0;
}