#include <bits/stdc++.h>
#define getc() (S==T&&(T=(S=B)+fread(B,1,1<<18,stdin),S==T)?0:*S++)
char B[1<<18],*S = B,*T = B;
long long getNum()
{
    long long ret = 0; char c;
    while(c=getc(),c<'0'||c>'9');
    for(;c>='0'&&c<='9';c=getc()) ret = ret*10+c-'0';
    return ret;
}
using namespace std;

int tcase,n,m;
long long K,lst[500010];

long long tmp[500010];

long long calc(int l,int r)
{
    int i,j,cnt = 0;
    long long ret = 0;
    
    if(r>n) r = n;
    for(i=l;i<=r;i++) tmp[i] = lst[i];
    sort(tmp+l,tmp+r+1);
    
    for(i=l,j=r;i<j && cnt<m;i++,j--,cnt++) ret += (tmp[j]-tmp[i])*(tmp[j]-tmp[i]);
    return ret;
}

int work()
{
    int i,last = 0,ret = 0;
    int head,tail,mid;
    
    while(last<n)
    {
        for(i=0;last+(1<<i)<n && calc(last+1,last+(1<<i))<=K;i++);
        
        head = 1<<(i?i-1:0); tail = min(1<<i,n-last);
        while(head < tail)
        {
            mid = (head+tail+1)>>1;
            if(calc(last+1,last+mid) <= K) head = mid;
            else tail = mid-1;
        }
        last += head; ret++;
    }
    
    return ret;
}

int main()
{
    int i;
    scanf("%d",&tcase);
    while(tcase--)
    {
        n = getNum(); m = getNum(); K = getNum();
        for(i=1;i<=n;i++) lst[i] = getNum();
        printf("%d\n",work());
    }
    return 0;
}
