#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=2e5+5;
int T,n,k;
int a[N],pre_g[N],suf_g[N],pre_l[N],suf_l[N],f1[N],f2[N];
vector<int>pos[N];
int main()
{
auto start=chrono::high_resolution_clock::now();
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>T;
while(T--)
{
cin>>n>>k;
for(int i=1;i<=n;i++)
pos[i].clear();
for(int i=1;i<=n;i++)
cin>>a[i],pos[a[i]].push_back(i);
stack<int>st;
for(int i=1;i<=n;i++)
pre_g[i]=pre_l[i]=0,suf_g[i]=suf_l[i]=n+1;
for(int i=n;i>=1;i--)
{
while(!st.empty()&&a[i]>a[st.top()]) pre_g[st.top()]=i,st.pop();
st.push(i);
}
while(!st.empty()) st.pop();
for(int i=1;i<=n;i++)
{
while(!st.empty()&&a[i]>a[st.top()]) suf_g[st.top()]=i,st.pop();
st.push(i);
}
while(!st.empty()) st.pop();
for(int i=n;i>=1;i--)
{
while(!st.empty()&&a[i]<a[st.top()]) pre_l[st.top()]=i,st.pop();
st.push(i);
}
while(!st.empty()) st.pop();
for(int i=1;i<=n;i++)
{
while(!st.empty()&&a[i]<a[st.top()]) suf_l[st.top()]=i,st.pop();
st.push(i);
}
// for(int i=1;i<=n;i++)
// cerr<<"i="<<i<<" pre_g="<<pre_g[i]<<" suf_g="<<suf_g[i]<<" pre_l="<<pre_l[i]<<" suf_l="<<suf_l[i]<<"\n";
ll ans=0;
for(int i=1;i<=n;i++)
if(!pos[i].empty()&&k-i>0&&k-i<=n&&!pos[k-i].empty())
{
int l=0,r=0,lst=0,s=0;
for(int j=0;j<=(int)pos[k-i].size()-2;j++)
s+=max(pos[k-i][j+1],suf_g[pos[k-i][j]]),f1[j]=s;
s=0;
for(int j=0;j<=(int)pos[k-i].size()-1;j++)
s+=suf_g[pos[k-i][j]],f2[j]=s;
for(int j=0;j<pos[i].size();j++)
{
while(r<pos[k-i].size()&&pre_g[pos[k-i][r]]<suf_l[pos[i][j]]) r++;
while(l<pos[k-i].size()&&pos[k-i][l]<=pos[i][j]) l++;
if(l>=r) continue;
lst=max(lst,pre_l[pos[i][j]]+1);
// cerr<<r<<"\n";
// assert(r>=2);
int sum=-pos[k-i][l]-(r>=2?f1[r-2]:0)+(r>0?f2[r-1]:0);
if(l) sum+=f1[l-1]-f2[l-1];
ans+=(pos[i][j]-lst+1)*sum;
lst=pos[i][j]+1;
// cerr<<"i="<<i<<" j="<<j<<" l="<<l<<" r="<<r<<" sum="<<sum<<" ans="<<ans<<"\n";
}
}
cout<<ans<<"\n";
}
auto stop=chrono::high_resolution_clock::now();
auto duration=chrono::duration_cast<chrono::milliseconds>(stop-start).count();
cerr<<"Elapsed time: "<<duration<<" ms\n";
return 0;
}