#include #include #include #include #include #define ull unsigned long long #define ll long long #define d double using namespace std; const int maxn=100233,mxnode=maxn<<1; int lc[mxnode],rc[mxnode],add[mxnode],tot; ll sm[mxnode]; struct zs{int col,pos;}a[maxn];int st[maxn],top; struct zs1{int x1,x2,y1,y2;}b[maxn];int cnt; struct zs2{int x1,x2,y2;};priority_queueq; int i,j,k,n,m,L,R,X; int ra;char rx; inline int read(){ rx=getchar(),ra=0; while(rx<'0'||rx>'9')rx=getchar(); while(rx>='0'&&rx<='9')ra*=10,ra+=rx-48,rx=getchar();return ra; } void build(int a,int b){ int x=++tot; if(a==b)return; int mid=a+b>>1; lc[x]=tot+1,build(a,mid),rc[x]=tot+1,build(mid+1,b); } void insert(int x,int a,int b){ if(L<=a&&R>=b){ add[x]++,sm[x]=b-a+1;return; } int mid=a+b>>1; if(L<=mid)insert(lc[x],a,mid); if(R>mid)insert(rc[x],mid+1,b); if(add[x])sm[x]=b-a+1;else sm[x]=sm[lc[x]]+sm[rc[x]]; } void del(int x,int a,int b){ if(L<=a&&R>=b){ add[x]--; if(add[x])sm[x]=b-a+1;else sm[x]=sm[lc[x]]+sm[rc[x]]; return; } int mid=a+b>>1; if(L<=mid)del(lc[x],a,mid); if(R>mid)del(rc[x],mid+1,b); if(add[x])sm[x]=b-a+1;else sm[x]=sm[lc[x]]+sm[rc[x]]; } inline void spec(){ n=cnt=read(); for(i=1;i<=n;i++)b[i].x1=read(),b[i].y1=read(),b[i].x2=read(),b[i].y2=read(); } bool cmpa(zs a,zs b){return a.colb.y2;} int main(){ build(1,100000); for(int t=read();t;t--){ cnt=0; n=read(),X=read(); for(i=1;i<=n;i++)a[i].col=read(),a[i].pos=i; sort(a+1,a+1+n,cmpa); for(i=1;i<=n;){ int r; for(r=i;r