#include using namespace std; template vector zaatu(vector &A){ //座標圧縮=Compress. vector B = A; sort(B.begin(),B.end()); B.erase(unique(B.begin(),B.end()),B.end()); for(auto &a : A) a = lower_bound(B.begin(),B.end(),a)-B.begin(); return B; } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int T; cin >> T; int sn = 0; while(T--){ int N; cin >> N; sn += N; if(sn > 7000 && N > 5) return 0; vector H(N); for(auto &h : H) cin >> h; zaatu(H); vector> dp(4,vector(N,1001001001)); for(int i=0; i H.at(1)){ if(i < H.at(1)) dp.at(0).at(i) = 1; else if(i == H.at(1)) dp.at(0).at(i) = 0; else if(i <= H.at(0)) dp.at(0).at(i) = 1; else dp.at(0).at(i) = 2; } else{ if(i <= H.at(0)) dp.at(0).at(i) = 1; else if(i == H.at(1)) dp.at(0).at(i) = 1; else dp.at(0).at(i) = 2; } } auto chmin = [&](auto &a,auto b) -> void {a=min(a,b);}; for(int p=2; p> next(4,vector(N,1001001001)); for(int t=0; t<4; t++){ if(t%2 == 0){ int low = 1001001001; for(int i=N-1; i>=0; i--){ low = min(low,dp.at(t).at(i)); chmin(next.at(t).at(i),low+1); } low = 1001001001; for(int i=0; i=0; i--){ low = min(low,dp.at(t).at(i)); chmin(next.at(t+1).at(i),low+1); } if(t != 3) for(int i=h; i