rt
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6 + 10;
int T,n,a[N],ct[N];
bool q[N],h[N];
void solve(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
q[i]=h[i]=false;
}
if(n==1&&a[1]==1){
cout<<0<<endl;
return;
}
int ans=0;
//1.
//if(a[1]==1&&a[n]==n) ++ans;
//2.差值为1 d = 1
q[1]=q[2]=true;int mx=max(a[1],a[2]),mi=min(a[1],a[2]);
for(int i=3;i<n;i++){
mx=max(mx,a[i]);mi=min(mi,a[i]);
if(mx-mi+1==i) q[i]=true;
}
//3.差值2 d = 2
if(abs(a[2]-a[1])%2==0){
mx=max(a[1],a[2]),mi=min(a[1],a[2]);
for(int i=3;i<n;i++){
mx=max(mx,a[i]);mi=min(mi,a[i]);
if((mx-mi)/2+1==i&&(mx-mi)%2==0) q[i]=true;
}
}
h[n]=h[n-1]=true;mx=max(a[n],a[n-1]),mi=min(a[n],a[n-1]);
// cout<<mx<<" "<<mi<<"ccf"<<endl;
for(int i=n-2,j=3;i>1;i--,++j){
mx=max(mx,a[i]);mi=min(mi,a[i]);
//cout<<mx<<" "<<mi<<" "<<j<<endl;
if(mx-mi+1==j) h[i]=true;
}
//3.差值2 d = 2
if(abs(a[n]-a[n-1])%2==0){
mx=max(a[n],a[n-1]),mi=min(a[n],a[n-1]);
for(int i=n-2,j=3;i>1;i--,++j){
mx=max(mx,a[i]);mi=min(mi,a[i]);
if((mx-mi)/2+1==j&&(mx-mi)%2==0) h[i]=true;
}
}
// for(int i=1;i<=n;i++) cout<<h[i]<<" ";
// cout<<endl;
for(int i=1;i<n;i++) ans+=(q[i]&&h[i+1]);
//cout<<q[i]<<" "<<h[i+1]<<endl;
cout<<ans<<endl;
}
signed main(){
cin>>T;
while(T--){
solve();
}
return 0;
}