
#include <bits/stdc++.h>
using namespace std;

void solve() {
    int N;
    if (!(cin >> N)) return;
    vector<int> A(N + 1);
    for (int i = 1; i <= N; ++i) cin >> A[i];

    vector<int> pmin(N + 2, 2e9), pmax(N + 2, -2e9);
    vector<int> smin(N + 2, 2e9), smax(N + 2, -2e9);
    for (int i = 1; i <= N; ++i) {
        pmin[i] = min(pmin[i - 1], A[i]);
        pmax[i] = max(pmax[i - 1], A[i]);
    }
    for (int i = N; i >= 1; --i) {
        smin[i] = min(smin[i + 1], A[i]);
        smax[i] = max(smax[i + 1], A[i]);
    }

    vector<char> cur(N + 2, 0), nxt(N + 2, 0);
    cur[1] = 1;
    int min_L = 1, max_L = 1, max_ops = 0;

    for (int k = 0; k < N; ++k) {
        int nxt_min = 2e9, nxt_max = -2e9;
        bool any = false;
        
        for (int L = min_L; L <= max_L; ++L) {
            if (!cur[L]) continue;
            int R = N - k + L - 1;
            int low = 2e9, high = -2e9;
            
            if (L > 1) { 
                low = pmin[L - 1]; 
                high = pmax[L - 1]; 
            }
            if (R < N) {
                if (smin[R + 1] < low) low = smin[R + 1];
                if (smax[R + 1] > high) high = smax[R + 1];
            }
            
            if (A[L] < low || A[L] > high) {
                nxt[L + 1] = 1;
                if (L + 1 < nxt_min) nxt_min = L + 1;
                if (L + 1 > nxt_max) nxt_max = L + 1;
                any = true;
            }
            if (L < R && (A[R] < low || A[R] > high)) {
                nxt[L] = 1;
                if (L < nxt_min) nxt_min = L;
                if (L > nxt_max) nxt_max = L;
                any = true;
            }
        }
        
        if (!any) break;
        max_ops = k + 1;
        
        for (int L = min_L; L <= max_L; ++L) cur[L] = 0;
        for (int L = nxt_min; L <= nxt_max; ++L) {
            cur[L] = nxt[L];
            nxt[L] = 0;
        }
        min_L = nxt_min;
        max_L = nxt_max;
    }
    cout << max_ops << "\n";
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int T;
    if (cin >> T) {
        while (T--) solve();
    }
    return 0;
}