using namespace std;
typedef long long ll;
ll a[100001],len,x,f[100001],len1,t;
ll find(ll l,ll r,ll x){
ll mid,ans;
while (l<=r){
mid=(l+r)/2;
if (f[mid]>=x){
ans=mid;
l=mid+1;
}
else r=mid-1;
}
return ans;
}
int main(){
while (cin>>x) a[++len]=x;
f[++len1]=a[1];
for (ll i=2;i<=len;i++){
if (f[len1]>=a[i]) f[++len1]=a[i];
else{
ll l=0,r=len1,mid,ans;
while (l<=r){
mid=(l+r)/2;
if (f[mid]>=a[i]) l=mid+1;
else{
ans=mid;
r=mid-1;
}
}
f[ans]=a[i];
}
}
for (ll i=1;i<=len;i++) if (f[i]!=0) t++;
cout<<t<<'\n';
memset(f,0,sizeof(f));
t=len1=0;
f[++len1]=a[1];
for (ll i=2;i<=len;i++){
if (f[len1]<a[i]) f[++len1]=a[i];
else{
ll l=0,r=len1,mid,ans;
while (l<=r){
mid=(l+r)/2;
if (f[mid]<a[i]) l=mid+1;
else{
ans=mid;
r=mid-1;
}
}
f[ans]=a[i];
}
}
for (ll i=1;i<=len;i++) if (f[i]!=0) t++;
cout<<t;
}