#include using namespace std; #define int long long int inf = 1e9; struct SEGm{ private: int n; vector node; public: SEGm(int N){ n = N; node.resize(2*n+1,inf); } void update(int i, int x){ i += n; node[i] = x; while(i > 1){ i >>= 1; node[i] = min(node[i<<1],node[i<<1|1]); } } int f(int l, int r){ l += n; r += n; int ans = inf; while(l < r){ if(l&1) ans = min(ans,node[l++]); if(r&1) ans = min(ans,node[--r]); l >>= 1; r >>= 1; } return ans; } }; struct SEGM{ private: int n; vector node; public: SEGM(int N){ n = 1; while(n < N) n *= 2; node.resize(2*n+1,-inf); } void update(int i, int x){ i += n; node[i] = max(node[i],x); while(i > 1){ i >>= 1; node[i] = max(node[i<<1],node[i<<1|1]); } } int f(int l, int r){ l += n; r += n; int ans = -inf; while(l < r){ if(l&1) ans = max(ans,node[l++]); if(r&1) ans = max(ans,node[--r]); l >>= 1; r >>= 1; } return ans; } }; signed main(){ int TT; cin>>TT; while(TT--){ int N; cin>>N; vector H(N); for(int i=0;i>H[i]; { vector> S(N); for(int i=0;i