#include <iostream>
#include <vector>
using namespace std;
int main()
{
int in, num = 0;
vector<int> height;
while(cin >> in)
{
num++;
height.push_back(in);
if(cin.get() == '\n')
break;
}
vector<int> get1, get2;
get1.push_back(height[0]);
for(int i = 1; i < num; i++)
{
if(height[i] <= get1[get1.size() - 1])
get1.push_back(height[i]);
else
{
int left = 0, right = get1.size() - 1;
while(left < right)
{
int mid = (left + right) >> 1;
if(get1[mid] < height[i])
right = mid;
else
left = mid + 1;
}
get1[left] = max(get1[left], height[i]);
}
}
get2.push_back(height[0]);
for(int i = 1; i < num; i++)
{
if(height[i] >= get2[get2.size() - 1])
get2.push_back(height[i]);
else
{
int left = 0, right = get2.size() - 1;
while(left < right)
{
int mid = (left + right) >> 1;
if(get2[mid] >= height[i])
right = mid;
else
left = mid + 1;
}
get2[left] = min(get2[left], height[i]);
}
}
cout << get1.size() << endl << get2.size();
return 0;
}