#include <cstdio>
#include <iostream>
using namespace std;
const int MAXN = 2e5 + 12;
int n,a[MAXN];
bool b[MAXN];
long long s[MAXN],sdis[MAXN];
long long query(int l,int r,bool fol)
{
if (l==r) return 0;
long long k,w;
if (l<r)
{
k = (l==0)?s[r]:s[r]-s[l-1],w = (l==0)?sdis[r]:sdis[r]-sdis[l-1];
}
else
{
k = s[r] + s[n-1] - s[l-1],w = sdis[n-1] - sdis[l-1] + sdis[r] + n*s[r];
r = r+n;
}
if (fol==0) return w - k*l - k*(k-1)/2;
else return k*r - k*(k-1)/2 - w;
}
void work()
{
scanf("%d",&n);
for (int i=0;i<n;i++) scanf("%d",a+i);
for (int i=0;i<n;i++)
if(i==n-1) b[i]=(a[n-1]>a[0]);
else b[i] = (a[i]>a[i+1]);
s[0]=b[0];sdis[0] = b[0]*0;
for (int i=1;i<n;i++) s[i]=s[i-1]+b[i];
for (int i=1;i<n;i++) sdis[i]=sdis[i-1]+1ll*b[i]*i;
long long ans = 1e15;
for (int i=0;i<n;i++)
{
int j = (i+n-1)%n;
int l=0,r=n-2,lm,rm;
while(r-l>=5)
{
lm = l + (r-l)/3,rm = r - (r-l)/3;
int tl = (i+lm)%n,tr = (i+rm)%n;
long long yl = query(i,tl,1)+query((tl+1)%n,j,0),yr = query(i,tr,1)+query((tr+1)%n,j,0);
if (yl>yr) l=lm;
else r=rm;
}
for (int o=l;o<=r;o++)
{
int t = (i+o)%n;
ans = min(ans,query(i,t,1)+query((t+1)%n,j,0));
}
}
printf("%lld\n",ans);
}
int main()
{
int t;scanf("%d",&t);
while (t--) work();
return 0;
}