#include<iostream>
#include<algorithm>
using namespace std;
int ori[100004];
int len;
int now[10005];
int dp[10005];
int f[10005][10005];
int main() {
while(cin>>ori[++len]) {
}
--len;
for(int i = 1; i<=len; ++i) {
dp[i] = 1;
for(int j = 1; j<i; ++j) {
if(ori[i] <= ori[j]&&dp[j] + 1>dp[i] ) {
dp[i] = dp[j]+1;
}
}
}
int ans = 0;
for(int i = 1; i<=len; ++i) {
ans = max(ans,dp[i]);
}
cout<<ans<<endl;
for(int i = 1; i<=len; ++i) {
now[i] = ori[i];
}
sort(now+1,now+len+1);
for(int i = 1; i<=len; ++i) {
for(int j = 1; j<=len; ++j) {
if(now[i] == ori[j])f[i][j] = f[i-1][j-1] + 1;
else f[i][j] = max(f[i][j-1],f[i-1][j]);
}
}
cout<<f[len][len];
return 0;
}