/*
关键是理解题意,如果当前取出的任务不是优先级最高的,那么就把该任务放在队列最后
注意,此时是不会打印优先级最高的任务,也不会消耗时间
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<string.h>
#include<math.h>
#include<queue>
using namespace std;
int main(){
int T,n,m,x,target;
scanf("%d",&T);
while(T--){
queue<int>Q;
priority_queue<int>PQ;
scanf("%d%d",&n,&m);
for(int i=0;i<n;++i){
scanf("%d",&x);
Q.push(x);
PQ.push(x);
if(i==m)target=x;
}
int t=0;
while(!PQ.empty()&&PQ.top()>=target){
while(Q.front()!=PQ.top()){
Q.push(Q.front());
Q.pop();
m=m==0?Q.size()-1:m-1;
}
Q.pop();PQ.pop();
++t,--m;
if(m<0)break;
}
printf("%d\n",t);
}
}