#include <bits/stdc++.h>
struct nn
{
    int v;
    int id;
    int to=-1;
};
struct Pair
{
    int v;
    int duiid;
};
int compare(nn a,nn b){
    return a.v>b.v;
}
int compare2(nn a,nn b){
    return a.id<b.id;
}
bool operator<(Pair p1,Pair p2){
    return p1.v>p2.v;
}
inline int read()
{
   register int s=0;
   register char ch=getchar();
   while(ch>='0'&&ch<='9') 
   {
        s=s*10+ch-'0';
        ch=getchar();
   }
   return s;
}

int main()
{
    
    int t;std::cin>>t;
    while(t--){
        std::priority_queue<Pair>que;    
        int n,m,maxn;
        std::cin>>n>>m>>maxn;
        char qq=getchar();
        nn num[100002];
        for(int i=0;i<n;i++){
            num[i].v=read();
            num[i].id=i;
        }
        std::sort(num,num+n,compare);
        for(int i=0;i<m;i++){
            que.push({num[i].v,i});
            num[i].to=i;
        }
        Pair temp;
        for(int i=m;i<n;i++){
            temp=que.top();
            que.pop();
            num[i].to=temp.duiid;
            que.push({num[i].v+temp.v,temp.duiid});
        }
        int m1,m2;
        m1=que.top().v;
        for(int i=1;i<m;i++){
            que.pop();
        }
        m2=que.top().v;
        if(m2<=m1+maxn){
            std::cout<<"YES\n";
            std::sort(num,num+n,compare2);
            std::cout<<num[0].to+1;
            for(int i=1;i<n;i++){
                std::cout<<' '<<num[i].to+1;
            }
            std::cout<<"\n";
        }
        else {
            std::cout<<"NO\n";
        }
    }
    return 0 ;
}