#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
const int N = 2e5, oo = 2e18, MOD = 1e9+7;
#define mid ((lx + rx) / 2)
#define left_child (2 * nx + 1)
#define right_child (2 * nx + 2)
class SegTreeLazy {
public:
struct Node {
int sum, lazy, isLazy;
Node() : sum(0), lazy(0), isLazy(0) { }
Node(int val) : sum(val), lazy(0), isLazy(0) { }
void update(int val, int lx, int rx) {
sum = (rx - lx) * val;
lazy = val;
isLazy = 1;
}
};
Node merge(Node& a, Node& b) {
Node ret;
ret.sum = a.sum + b.sum;
return ret;
}
int tree_size;
vector<Node> tree;
SegTreeLazy(int n) {
tree_size = 1;
while (tree_size < n) tree_size *= 2;
tree.assign(2 * tree_size, Node());
}
void build(vector<int>& a, int n, int nx, int lx, int rx) {
if (rx - lx == 1) {
if (lx < n)
tree[nx] = Node(a[lx]);
return;
}
build(a, n, left_child, lx, mid);
build(a, n, right_child, mid, rx);
tree[nx] = merge(tree[left_child], tree[right_child]);
}
void build(vector<int>& arr) {
build(arr, arr.size(), 0, 0, tree_size);
}
void propagate(int nx, int lx, int rx) {
if (rx - lx == 1 || !tree[nx].isLazy) return;
tree[left_child].update(tree[nx].lazy, lx, mid);
tree[right_child].update(tree[nx].lazy, mid, rx);
tree[nx].lazy = tree[nx].isLazy = 0;
}
Node query(int l, int r, int nx, int lx, int rx) {
if (l >= rx || lx >= r) return Node();
if (lx >= l && rx <= r) return tree[nx];
propagate(nx, lx, rx);
Node L = query(l, r, left_child, lx, mid);
Node R = query(l, r, right_child, mid, rx);
return merge(L, R);
}
int query(int l, int r) {
Node a = query(l, r, 0, 0, tree_size);
return a.sum;
}
void update(int l, int r, int val, int nx, int lx, int rx) {
propagate(nx, lx, rx);
if (l >= rx || lx >= r) return;
if (lx >= l && rx <= r) {
tree[nx].update(val, lx, rx);
return;
}
update(l, r, val, left_child, lx, mid);
update(l, r, val, right_child, mid, rx);
tree[nx] = merge(tree[left_child], tree[right_child]);
}
void update(int l, int r, int val) {
update(l, r, val, 0, 0, tree_size);
}
};
#undef mid
#undef left_child
#undef right_child
void solve() {
int n; cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
vector<int> next_greater(n, n);
stack<int> st;
for (int i = n-1; i >= 0; i--) {
while (!st.empty() && a[st.top()] <= a[i]) {
st.pop();
}
if (!st.empty())
next_greater[i] = st.top();
st.push(i);
}
SegTreeLazy vis(n);
int ans = 0;
stack<int> st2;
for (int i = 0; i < n-1; i++) {
if (vis.query(i, i + 1)) {
st2.push(i);
continue;
}
while (!st2.empty() && (vis.query(st2.top(), st2.top() + 1) || a[st2.top()] <= a[i])) {
st2.pop();
}
if (i == 0 || a[i] <= a[i-1] || a[i] <= a[i + 1]) {
st2.push(i);
continue;
}
int prev_greater = -1;
if (!st2.empty())
prev_greater = st2.top();
st2.push(i);
int gap = vis.query(prev_greater + 1, i);
int cnt1 = i - prev_greater - 1 - gap, cnt2 = next_greater[i] - i - 1;
if (cnt2 < cnt1) {
vis.update(i + 1, next_greater[i], 1);
ans += cnt2;
} else {
vis.update(prev_greater + 1, i, 1);
ans += cnt1;
}
}
cout << ans << endl;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
// #ifndef ONLINE_JUDGE
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
// #endif
int t; t = 1;
cin >> t;
while (t--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGVuZGwgICAgICdcbicKI2RlZmluZSBpbnQgICAgICBsb25nIGxvbmcKCmNvbnN0IGludCBOID0gMmU1LCBvbyA9IDJlMTgsIE1PRCA9IDFlOSs3OwoKI2RlZmluZSBtaWQgKChseCArIHJ4KSAvIDIpCiNkZWZpbmUgbGVmdF9jaGlsZCAoMiAqIG54ICsgMSkKI2RlZmluZSByaWdodF9jaGlsZCAoMiAqIG54ICsgMikKCmNsYXNzIFNlZ1RyZWVMYXp5IHsKcHVibGljOgogICAgc3RydWN0IE5vZGUgewogICAgICAgIGludCBzdW0sIGxhenksIGlzTGF6eTsKICAgICAgICBOb2RlKCkgOiBzdW0oMCksIGxhenkoMCksIGlzTGF6eSgwKSB7IH0KICAgICAgICBOb2RlKGludCB2YWwpIDogc3VtKHZhbCksIGxhenkoMCksIGlzTGF6eSgwKSB7IH0gCiAgICAgICAgdm9pZCB1cGRhdGUoaW50IHZhbCwgaW50IGx4LCBpbnQgcngpIHsKICAgICAgICAgICAgc3VtID0gKHJ4IC0gbHgpICogdmFsOwogICAgICAgICAgICBsYXp5ID0gdmFsOwogICAgICAgICAgICBpc0xhenkgPSAxOwogICAgICAgIH0KICAgIH07CiAgICBOb2RlIG1lcmdlKE5vZGUmIGEsIE5vZGUmIGIpIHsKICAgICAgICBOb2RlIHJldDsKICAgICAgICByZXQuc3VtID0gYS5zdW0gKyBiLnN1bTsKICAgICAgICByZXR1cm4gcmV0OwogICAgfSAgIAogICAgaW50IHRyZWVfc2l6ZTsKICAgIHZlY3RvcjxOb2RlPiB0cmVlOwogICAgU2VnVHJlZUxhenkoaW50IG4pIHsKICAgICAgICB0cmVlX3NpemUgPSAxOwogICAgICAgIHdoaWxlICh0cmVlX3NpemUgPCBuKSB0cmVlX3NpemUgKj0gMjsKICAgICAgICB0cmVlLmFzc2lnbigyICogdHJlZV9zaXplLCBOb2RlKCkpOwogICAgfQogICAgdm9pZCBidWlsZCh2ZWN0b3I8aW50PiYgYSwgaW50IG4sIGludCBueCwgaW50IGx4LCBpbnQgcngpIHsKICAgICAgICBpZiAocnggLSBseCA9PSAxKSB7CiAgICAgICAgICAgIGlmIChseCA8IG4pCiAgICAgICAgICAgICAgICB0cmVlW254XSA9IE5vZGUoYVtseF0pOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBidWlsZChhLCBuLCBsZWZ0X2NoaWxkLCBseCwgbWlkKTsKICAgICAgICBidWlsZChhLCBuLCByaWdodF9jaGlsZCwgbWlkLCByeCk7CiAgICAgICAgdHJlZVtueF0gPSBtZXJnZSh0cmVlW2xlZnRfY2hpbGRdLCB0cmVlW3JpZ2h0X2NoaWxkXSk7CiAgICB9CiAgICB2b2lkIGJ1aWxkKHZlY3RvcjxpbnQ+JiBhcnIpIHsKICAgICAgICBidWlsZChhcnIsIGFyci5zaXplKCksIDAsIDAsIHRyZWVfc2l6ZSk7CiAgICB9CiAgICB2b2lkIHByb3BhZ2F0ZShpbnQgbngsIGludCBseCwgaW50IHJ4KSB7CiAgICAgICAgaWYgKHJ4IC0gbHggPT0gMSB8fCAhdHJlZVtueF0uaXNMYXp5KSByZXR1cm47CiAgICAgICAgdHJlZVtsZWZ0X2NoaWxkXS51cGRhdGUodHJlZVtueF0ubGF6eSwgbHgsIG1pZCk7CiAgICAgICAgdHJlZVtyaWdodF9jaGlsZF0udXBkYXRlKHRyZWVbbnhdLmxhenksIG1pZCwgcngpOwogICAgICAgIHRyZWVbbnhdLmxhenkgPSB0cmVlW254XS5pc0xhenkgPSAwOwogICAgfQogICAgTm9kZSBxdWVyeShpbnQgbCwgaW50IHIsIGludCBueCwgaW50IGx4LCBpbnQgcngpIHsKICAgICAgICBpZiAobCA+PSByeCB8fCBseCA+PSByKSByZXR1cm4gTm9kZSgpOwogICAgICAgIGlmIChseCA+PSBsICYmIHJ4IDw9IHIpIHJldHVybiB0cmVlW254XTsKCiAgICAgICAgcHJvcGFnYXRlKG54LCBseCwgcngpOwoKICAgICAgICBOb2RlIEwgPSBxdWVyeShsLCByLCBsZWZ0X2NoaWxkLCBseCwgbWlkKTsKICAgICAgICBOb2RlIFIgPSBxdWVyeShsLCByLCByaWdodF9jaGlsZCwgbWlkLCByeCk7CiAgICAgICAgcmV0dXJuIG1lcmdlKEwsIFIpOwogICAgfQogICAgaW50IHF1ZXJ5KGludCBsLCBpbnQgcikgewogICAgICAgIE5vZGUgYSA9IHF1ZXJ5KGwsIHIsIDAsIDAsIHRyZWVfc2l6ZSk7CiAgICAgICAgcmV0dXJuIGEuc3VtOwogICAgfQogICAgdm9pZCB1cGRhdGUoaW50IGwsIGludCByLCBpbnQgdmFsLCBpbnQgbngsIGludCBseCwgaW50IHJ4KSB7CiAgICAgICAgcHJvcGFnYXRlKG54LCBseCwgcngpOwogICAgICAgIGlmIChsID49IHJ4IHx8IGx4ID49IHIpIHJldHVybjsKICAgICAgICBpZiAobHggPj0gbCAmJiByeCA8PSByKSB7CiAgICAgICAgICAgIHRyZWVbbnhdLnVwZGF0ZSh2YWwsIGx4LCByeCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdXBkYXRlKGwsIHIsIHZhbCwgbGVmdF9jaGlsZCwgbHgsIG1pZCk7CiAgICAgICAgdXBkYXRlKGwsIHIsIHZhbCwgcmlnaHRfY2hpbGQsIG1pZCwgcngpOwoKICAgICAgICB0cmVlW254XSA9IG1lcmdlKHRyZWVbbGVmdF9jaGlsZF0sIHRyZWVbcmlnaHRfY2hpbGRdKTsKICAgIH0KICAgIHZvaWQgdXBkYXRlKGludCBsLCBpbnQgciwgaW50IHZhbCkgewogICAgICAgIHVwZGF0ZShsLCByLCB2YWwsIDAsIDAsIHRyZWVfc2l6ZSk7CiAgICB9Cgp9OwoKI3VuZGVmIG1pZCAKI3VuZGVmIGxlZnRfY2hpbGQgCiN1bmRlZiByaWdodF9jaGlsZCAKCnZvaWQgc29sdmUoKSB7CiAgICBpbnQgbjsgY2luID4+IG47CiAgICB2ZWN0b3I8aW50PiBhKG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgIH0KCiAgICB2ZWN0b3I8aW50PiBuZXh0X2dyZWF0ZXIobiwgbik7CiAgICBzdGFjazxpbnQ+IHN0OwogICAgZm9yIChpbnQgaSA9IG4tMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICB3aGlsZSAoIXN0LmVtcHR5KCkgJiYgYVtzdC50b3AoKV0gPD0gYVtpXSkgewogICAgICAgICAgICBzdC5wb3AoKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFzdC5lbXB0eSgpKSAKICAgICAgICAgICAgbmV4dF9ncmVhdGVyW2ldID0gc3QudG9wKCk7CiAgICAgICAgc3QucHVzaChpKTsKICAgIH0KCiAgICBTZWdUcmVlTGF6eSB2aXMobik7CiAgICBpbnQgYW5zID0gMDsKICAgIHN0YWNrPGludD4gc3QyOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuLTE7IGkrKykgewogICAgICAgIGlmICh2aXMucXVlcnkoaSwgaSArIDEpKSB7CiAgICAgICAgICAgIHN0Mi5wdXNoKGkpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKCFzdDIuZW1wdHkoKSAmJiAodmlzLnF1ZXJ5KHN0Mi50b3AoKSwgc3QyLnRvcCgpICsgMSkgfHwgYVtzdDIudG9wKCldIDw9IGFbaV0pKSB7CiAgICAgICAgICAgIHN0Mi5wb3AoKTsKICAgICAgICB9CiAgICAgICAgaWYgKGkgPT0gMCB8fCBhW2ldIDw9IGFbaS0xXSB8fCBhW2ldIDw9IGFbaSArIDFdKSB7CiAgICAgICAgICAgIHN0Mi5wdXNoKGkpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaW50IHByZXZfZ3JlYXRlciA9IC0xOwogICAgICAgIGlmICghc3QyLmVtcHR5KCkpCiAgICAgICAgICAgIHByZXZfZ3JlYXRlciA9IHN0Mi50b3AoKTsKICAgICAgICAgICAgCiAgICAgICAgc3QyLnB1c2goaSk7CiAgICAgICAgaW50IGdhcCA9IHZpcy5xdWVyeShwcmV2X2dyZWF0ZXIgKyAxLCBpKTsKICAgICAgICBpbnQgY250MSA9IGkgLSBwcmV2X2dyZWF0ZXIgLSAxIC0gZ2FwLCBjbnQyID0gbmV4dF9ncmVhdGVyW2ldIC0gaSAtIDE7CiAgICAgICAgaWYgKGNudDIgPCBjbnQxKSB7CiAgICAgICAgICAgIHZpcy51cGRhdGUoaSArIDEsIG5leHRfZ3JlYXRlcltpXSwgMSk7CiAgICAgICAgICAgIGFucyArPSBjbnQyOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZpcy51cGRhdGUocHJldl9ncmVhdGVyICsgMSwgaSwgMSk7CiAgICAgICAgICAgIGFucyArPSBjbnQxOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgYW5zIDw8IGVuZGw7Cn0KCgpzaWduZWQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyAKICAgIGNpbi50aWUoTlVMTCk7IGNvdXQudGllKE5VTEwpOwogICAgLy8gI2lmbmRlZiBPTkxJTkVfSlVER0UgCiAgICAvLyAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsgCiAgICAvLyAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOyAKICAgIC8vICNlbmRpZiAKICAgIGludCB0OyB0ID0gMTsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkgc29sdmUoKTsKICAgIHJldHVybiAwOwp9Cg==