/*
89 126 85 103 101 86 86 98 96 99 89 81 101 92 79 77 82 97 83 100 78 72 79 97 71 80 98 89 69 74
*/
//12 6 [12,8]
#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 1e5 + 5;
int a[N], x, l, dp[N], maxn;
int g[N], cnt,ans1,ans2;
int main() {
while (cin>>x){
a[++l] = x;
if(cin.get()=='\n') break;
}
//cin>>x; a[++l]=x;
/*
for(int i=1;i<=l;i++) cout<<a[i]<<endl;
for (int i = 1; i <= l; i++) {
int k = 1;
while (k <= cnt && g[k] >= a[i]) k++;
if (k > cnt) g[++cnt] = a[i];
else g[k] = a[i];
}
cout << cnt << endl;
cnt = 0;
for (int i = 1; i <= l; i++) {
int k = 1;
while (k <= cnt && g[k] < a[i]) k++;
if (k > cnt) g[++cnt] = a[i];
else g[k] = a[i];
}
cout << cnt << endl;
*/
// memset(dp,1,sizeof(dp));//
// for(int i=1;i<=l;i++) cout<<a[i]<<endl;
for(int i=1;i<=l;i++) dp[i]=1;
for(int i=2;i<=l;i++)
{
for(int j=1;j<=i-1;j++)
{
if(a[i]<=a[j]) dp[i]=max(dp[i],dp[j]+1);
}
}
for(int i=1;i<=l;i++) ans1=max(ans1,dp[i]);
cout<<ans1<<endl;
for(int i=1;i<=l;i++) dp[i]=1;
for(int i=2;i<=l;i++)
{
for(int j=i-1;j>=1;j--)
{
if(a[i]>a[j]) dp[i]=max(dp[i],dp[j]+1);
}
}
for(int i=1;i<=l;i++) ans2=max(ans2,dp[i]);
cout<<ans2<<'\n';
}