#include using namespace std; #define N 100100 #define MP make_pair #define F first #define S second #define LL long long int int main() { LL a[N],low,mid,high,i,j,k,t,n,q,x,ctl,ctg,totctl,totctg,nl,ind,ng,ans; scanf("%lld",&t); assert(t>=1 && t<=10); while(t--) { scanf("%lld %lld",&n,&q); assert(n>=1 && n<=100000); assert(q>=1 && q<=100000); map index,sortedIndex; map:: iterator itr; for(i=1;i<=n;i++) { scanf("%lld",&a[i]); assert(a[i]>=1 && a[i]<=1000000000); index.insert(MP(a[i],i)); //Map element to original index } k=1; for(itr=index.begin();itr!=index.end();itr++) { j=itr->F; sortedIndex.insert(MP(j,k)); //Map element to sorted index k++; } for(i=0;iS; nl=sortedIndex.find(x)->S - 1;//Number of terms less than x ng=n-nl-1;//Number of terms greater than x low=1; high=n; ctl=ctg=totctl=totctg=0; while(lowx) ctl++;//Numbers that should be less than x but aren't } } if(totctl>nl||totctg>ng) //Not enough numbers available greater thanx or less than x ans=-1; else ans=min(ctl,ctg)+abs(ctl-ctg); printf("%lld\n",ans); } } }