#include #include using namespace std; int inf=2e9; int op(int a,int b){return max(a,b);} int e(){return -inf;} void solve(){ int n; cin>>n; vector h(n); for (int i=0;i>h[i]; auto cmp=h; sort(cmp.begin(),cmp.end()); vector seg(4,atcoder::segtree(n)); for (int i=0;i=0;i--){ if (i%2==0){ int p=seg[i].prod(h[t],n); if (i) p=max(p,seg[i-1].prod(h[t],n)); seg[i].set(h[t],p+1); } else{ int p=seg[i].prod(0,h[t]+1); p=max(p,seg[i-1].prod(0,h[t]+1)); seg[i].set(h[t],p+1); } } } cout<>t; while (t--) solve(); }