#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for (int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<long long> vll;

void solve()
{
    ll n;
    cin >> n;

    vector<pair<ll, ll>> v(n);
    for (ll i = 0; i < n; i++)
    {
        cin >> v[i].first;
        v[i].second = i;
    }

    vector<vector<ll>> g(n);

    if (n == 1)
    {
        cout << 1 << endl;
        return;
    }

    for (ll i = 0; i < n; i++)
    {
        if (i == 0)
        {
            if (v[i + 1] < v[i])
            {
                g[i].push_back(i + 1);
            }
            if (v[i + 1] == v[i])
            {
                g[i].push_back(i + 1);
                g[i + 1].push_back(i);
            }
        }
        else if (i == n - 1)
        {
            if (v[n - 2] < v[n - 1])
            {
                g[n - 1].push_back(n - 2);
            }
            if (v[n - 2] == v[n - 1])
            {
                g[n - 1].push_back(n - 2);
                g[n - 2].push_back(n - 1);
            }
        }
        else
        {
            if (v[i - 1] < v[i])
            {
                g[i].push_back(i - 1);
            }
            if (v[i] > v[i + 1])
            {
                g[i].push_back(i + 1);
            }
            if (v[i] == v[i + 1])
            {
                g[i].push_back(i + 1);
                g[i + 1].push_back(i);
            }
            if (v[i + 1] == v[i])
            {
                g[i].push_back(i + 1);
                g[i + 1].push_back(i);
            }
        }
    }

    sort(v.rbegin(), v.rend());
    vector<ll> visited(n, 0);
    ll grp_index = 0;
    for (ll i = 0; i < n; i++)
    {
        if (visited[v[i].second])
        {
            continue;
        }

        queue<ll> q;
        q.push(v[i].second);
        while (!q.empty())
        {
            auto e = q.front();
            q.pop();
            visited[e] = 1;
            for (auto f : g[e])
            {
                if (!visited[f])
                {
                    q.push(f);
                }
            }
        }
        grp_index++;
    }

    cout << grp_index << endl;
}

int main()
{
    cin.tie(0)->sync_with_stdio(0);
    cin.exceptions(cin.failbit);

    int t;
    cin >> t;
    while (t--)
        solve();
}