#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
int a[maxn], n, ans, d[maxn], f[maxn], cnt = 1, d2[maxn];
int main() {
while (cin >> a[++n])
d[n] = 5 * 1e4;
n--;
for (int i = n; i >= 1; i--) {
int now = upper_bound(d + 1, d + n + 1, a[i]) - d;
f[i] = now;
d[now] = a[i];
ans = max(ans, f[i]);
}
cout << ans << '\n';
cnt = 1, d2[1] = a[1];
for (int i = 2; i <= n; i++) {
int minn = INT_MAX, id;
for (int j = 1; j <= cnt; j++) {
if (a[i] <= d2[j] && minn > d2[j]) {
minn = d2[j];
id = j;
}
}
if (minn == INT_MAX) {
cnt++;
d2[cnt] = a[i];
}
else
d2[id] = a[i];
}
cout << cnt;
return 0;
}