#include #include #include #include #include #include #include #include #include #include #include #define loop(i,a,b) for(int i=a;i vi; typedef vector vvi; typedef pair pii; int LIS(vi in){//Longest Increasing Subsequence int n=in.size(); int r=1; vi out(n+1,inf); rep(i,n){ *lower_bound(all(out),in[i])=in[i]; } return lower_bound(all(out),inf)-out.begin(); } int main(){ int n; cin>>n; vi a(n); rep(i,n)cin>>a[i]; cout<