#include #include #include #include #define maxn 200005 #define LL long long #define lowbit(x) (x&-x) using namespace std; struct tree { int n,l,r,v; }; tree d[maxn<<2]; int T,n,a[maxn],m,k,C[maxn<<2]; void buildtree(int n,int l,int r) { d[n].r=r; d[n].l=l; if (l==r) { if (a[l]>=m) d[n].v=1; return ; } int mid=(l+r)>>1; buildtree(n<<1,l,mid); buildtree(n<<1|1,mid+1,r); d[n].v=d[n<<1].v+d[n<<1|1].v; } int Count(int n,int l,int r) { if (d[n].r==r && d[n].l==l) return d[n].v; int mid=(d[n].l+d[n].r)>>1; if (r<=mid) return Count(n<<1,l,r); else if (l>mid) return Count(n<<1|1,l,r); else return Count(n<<1,l,mid)+Count(n<<1|1,mid+1,r); } int sum(int x) { int ret=0; while (x>0) { ret+=C[x]; x-=lowbit(x); } return ret; } void add(int x,int d) { while (x<=n) { C[x]+=d; x+=lowbit(x); } } int main() { scanf("%d",&T); while (T--) { memset(a,0,sizeof(a)); memset(C,0,sizeof(C)); LL ans=0; scanf("%d%d%d",&n,&m,&k); for (int i=1;i<=n;i++) scanf("%d",&a[i]); //buildtree(1,1,n); for (int i=1;i<=n;i++) if (a[i]>=m) add(i,1); for (int i=1;i<=n;i++) { //------------ int L,R,mid; L=i; R=n; while (L<=R) { mid=(L+R)>>1; //int c=Count(1,i,mid); int c=sum(mid)-sum(i-1); if (c