#pragma GCC optmize(2)
#include<bits/stdc++.h>
using namespace std;
int n,k,a[300001],num[300001],b[300001];
int LIS(int *a){
memset(num,0x7f,sizeof(num));
int ans = 1;
num[1] = a[1];
for(int i = 2;i <= n;i++){
if(a[i] > num[ans])num[++ans] = a[i];
else *lower_bound(num + 1,num + n + 1,a[i]) = a[i];
}
return ans;
}
signed main(){
while(~scanf("%d",&a[++n]));
for(int i = 1;i <= n;i++)b[n + 1 - i] = a[i];
cout << LIS(b) << endl << LIS(a);
}
记录