#include<bits/stdc++.h>
using namespace std;
int n,a[100010];
int f[100010];
int g[100010];
int f1(string s)
{
int h = 1,ans = 0;
for(int i = s.length() - 1;i >= 1;i--)
{
ans += (s[i] - '0') * h;
h *= 10;
}
return ans;
}
string s,str = "0";
void input()
{
getline(cin,s);
int l = s.length();
for(int i = 0;i < l;i++)
{
if(s[i] == ' ')
{
n++;
a[n] = f1(str);
str = "0";
continue;
}
str += s[i];
}
n++;
a[n] = f1(str);
str = "0";
}
void work1()
{
int len = 1;
f[1] = a[1];
for(int i =2;i <= n;i++)
{
if(a[i] <= f[len])
{
len++;
f[len] = a[i];
}
else
{
int j = 0;
int l = 1,r = len,mid;
while(l < r + 1)
{
mid = (l + r) / 2;
if(a[i] > f[mid])
{
j = mid;
r = mid - 1;
}
else
{
l = mid + 1;
}
}
f[j] = a[i];
}
}
cout << len;
}
void work2()
{
int len = 1;
g[1] = a[1];
for(int i =2;i <= n;i++)
{
if(a[i] > g[len])
{
len++;
g[len] = a[i];
}
else
{
int j = 0;
int l = 1,r = len,mid;
while(l < r + 1)
{
mid = (l + r) / 2;
if(a[i] <= g[mid])
{
j = mid;
r = mid - 1;
}
else
{
l = mid + 1;
}
}
g[j] = a[i];
}
}
cout << len;
}
int main()
{
input();
work1();
cout << endl;
work2();
}