#include template struct SegmentTree { int n; std::vector info; SegmentTree(int n): n(n-1),info(4< init): SegmentTree(init.size()) { std::function build= [&] (int pl,int l,int r) { if (l==r) { info[pl]=init[l]; return; } int mid=(l+r)>>1; build(pl*2,l,mid); build(pl*2+1,mid+1,r); pull(pl); }; build (1,1,n); } void pull(int pl) { info[pl]=info[pl*2]+info[pl*2+1]; } void modify(int pl,int l,int r,int x,const Info &v) { if (l==r) { info[pl]=v; return; } int mid=(l+r)>>1; if (x<=mid) modify(pl*2,l,mid,x,v); if (x>mid) modify(pl*2+1,mid+1,r,x,v); pull(pl); } void modify(int x,const Info &v) { modify(1,1,n,x,v); } Info rangeQuery(int pl,int l,int r,int x,int y) { if ((l>y)||(x>r)) return Info(); if ((x<=l)&&(r<=y)) return info[pl]; int mid=(l+r)>>1; return rangeQuery(pl*2,l,mid,x,y)+rangeQuery(pl*2+1,mid+1,r,x,y); } Info rangeQuery(int x,int y) { return rangeQuery(1,1,n,x,y); } }; using namespace std; int _; int n,l,r; int x[200010]; int q[500010]; long long anss; int main() { ios::sync_with_stdio(false); cin.tie(0); cin>>_; for (int qqw=1; qqw<=_; qqw++) { cin>>n; SegmentTree ran(n+10); l=250000; r=l-1; anss=0; for (int i=1; i<=n; i++) { cin>>x[i]; int ccf=ran.rangeQuery(1,x[i]); if (ccfi-1-ccf) { r++; q[r]=x[i]; anss=anss+i-1-ccf; } if (ccf==i-1-ccf) { if (i==1) { r++; q[r]=x[i]; } else { if (x[i]