#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mem(a, b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define DBG printf("this is a input\n")
#define fi first
#define se second
#define mk(a, b) make_pair(a,b)
#define p_queue priority_queue
ll gcd(ll a, ll b) {
return b == 0 ? a : gcd(b, a % b);
}
ll lcm(ll a, ll b) {
return a / gcd(a, b) * b;
}
int n = 0;
int num[100005];
int dp1[100005];
int dp2[100005];
int main()
{
while(cin>>num[++ n]);
n --;
dp1[1] = num[1];
dp2[1] = num[1];
int len1 = 1, len2 = 1;
for(int i = 2 ; i <= n ; i ++)
{
if(dp1[len1] >= num[i])
dp1[++ len1] = num[i];
else
{
int index = upper_bound(dp1+1,dp1+1+len1,num[i],greater<int>()) - dp1;
dp1[index] = num[i];
}
if(dp2[len2] < num[i])
dp2[++ len2] = num[i];
else
{
int index = lower_bound(dp2+1,dp2+1+len2,num[i])-dp2;
dp2[index] = num[i];
}
}
cout<<len1<<endl;
cout<<len2<<endl;
return 0;
}