#include<bits/stdc++.h>
using namespace std;
int n,a[100005],dp[100005],pd[100005],maxn=0,p;
int main(){
while(cin>>p){
a[++n]=p;
}
pd[1]=a[1];
int len=1;
for(int i=2;i<=p;i++){
if (a[i]<pd[len]){
len++;
pd[len]=a[i];
}else{
int *p1=lower_bound(pd+1,pd+len+1,a[i]);
int left=p1-pd;
pd[left]=a[i];
}
}
cout<<len<<endl;
dp[1]=a[1];
len=1;
for(int i=2;i<=p;i++){
if (a[i]>dp[len]){
len++;
dp[len]=a[i];
}else{
int *p1=lower_bound(dp+1,dp+len+1,a[i]);
int left=p1-dp;
dp[left]=a[i];
}
}
cout<<len;
return 0;
}