#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define il inline
#define re register
const int maxn=1e5+10;
int a[maxn],cnt=0,ans=1,dp[maxn],d[maxn],t;
il int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
while(~scanf("%d",&a[++cnt]));
cnt--;
memset(dp,1,sizeof(dp));
for(re int i=1;i<=cnt;++i)
{
for(re int j=t;j>0;--j)
{
if(a[i]<=a[d[j]])
{
dp[i]=dp[d[j]]+1;
break;
}
}
t=max(t,dp[i]);
d[dp[i]]=i;
ans=max(ans,dp[i]);
}
printf("%d\n",ans);
ans=1;t=0;
memset(dp,1,sizeof(dp));
for(re int i=1;i<=cnt;++i)
{
for(re int j=t;j>0;j--)
{
if(a[i]>a[d[j]])
{
dp[i]=dp[d[j]]+1;
break;
}
}
t=max(t,dp[i]);
d[dp[i]]=i;
ans=max(ans,dp[i]);
}
printf("%d",ans);
return 0;
}