#include<iostream>
#include<algorithm>
using namespace std;
using ll= long long;
const int N=5e5+10;
int n,m,ans;
ll T,w[N],t[N],tmp[N];
ll sq(ll x){
return x*x;
}
bool check(int left,int mid,int r){
for(int i=mid;i<r;++i){
t[i]=w[i];
}
sort(t+mid,t+r);
int i=left,j=mid,k=0;
while(j!=r&&i!=mid){
if(t[i]<t[j]){
tmp[k++]=t[i++];
}else{
tmp[k++]=t[j++];
}
}
while(i!=mid){
tmp[k++]=t[i++];
}
while(j!=r){
//TODO keep move
tmp[k++]=t[j++];
}
ll sum=0;
for(i=0;i<m&&i<k;++i,--k){
sum+=sq(tmp[i]-tmp[k-1]);
}
return sum<=T;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int k;
cin>>k;
while(k--){
//TODO input
cin>>n>>m>>T;
for(int i=0;i<n;++i){
cin>>w[i];
}
ans=0;
int len,start=0,iend=0;
while(iend<n){
len=1;
while(len){
if(iend+len<=n && check(start,iend,iend+len)){//legal index check
iend+=len,len<<=1;
if(iend>=n){//pruning
break;
}
for(int i=start;i<iend;++i){
t[i]=tmp[i-start];
}
}else{
len>>=1;
}
}
start=iend;
++ans;
}
cout<<ans<<'\n';
}
return 0;
}