#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int LL; typedef pair P; typedef pair LP; const int INF=1<<30; const LL MAX=1e9+7; void array_show(int *array,int array_n,char middle=' '){ for(int i=0;i &vec_s,int vec_n=-1,char middle=' '){ if(vec_n==-1)vec_n=vec_s.size(); for(int i=0;i &vec_s,int vec_n=-1,char middle=' '){ if(vec_n==-1)vec_n=vec_s.size(); for(int i=0;i ostream& operator<<(ostream& os,const vector& v1){ int n=v1.size(); for(int i=0;i ostream& operator<<(ostream& os,const pair& p){ os< istream& operator>>(istream& is,vector& v1){ int n=v1.size(); for(int i=0;i>v1[i]; return is; } template istream& operator>>(istream& is,pair& p){ is>>p.first>>p.second; return is; } template class bit{ private: vector bit_vec; int bit_N=20; T bit_comp(T a,T b){ return max(a,b); } public: bit(int n){ for(bit_N=0;bit_N<30;bit_N++){ if(n<(1<=(1<>n; vector v1(n); vector va(n+1),vb(n+1); cin>>v1; for(i=0;i bt(n); for(i=0;i bt2(n); for(i=n-1;i>=0;i--){ b=n-1-v1[i]; a=bt2.search(b); bt2.set(b,a+1); vb[i]=a; } vector cnt(n); for(i=0;i vs; for(i=0;i