#include<bits/stdc++.h>
using namespace std;
int t,n,a[1000005],s[1000005],f,cnt=0,ans=0;
int main() {
while(cin>>t){
a[++n]=t;
}
memset(s,0x3f,sizeof s);
reverse(a+1,a+n+1);
for(int i=1;i<=n;i++){
int l=1,r=i;
while(l<r){
int mid=(l+r)>>1;
if(s[mid]>a[i]) r=mid;
else l=mid+1;
}
s[l]=min(s[l],a[i]);
ans=max(ans,l);
}
cout<<ans<<endl;
s[++cnt]=a[1];
for(int i=2;i<=n;i++){
int k=0,ans=1e9;
for(int j=1;j<=cnt;j++){
if(s[j]>=a[i]&&ans>s[j]){
ans=s[j];
k=j;
}
}
if(k){
s[k]=a[i];
}else{
s[++cnt]=a[i];
}
}
cout<<cnt;
return 0;
}