2 8
2 15 400
1 13 100
3 26
3 27
3 28
3 29
3 30
3 31
3 32
3 33
 3 8
2 15 400
1 1 200
1 13 100
3 26
3 27
3 28
3 29
3 30
3 31
3 32
3 33

400
400
500
500
800
800
800
800
 600
600
600
700
800
1000
1000
1000

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int t=sc.nextInt();
        while(t--!=0){
            int n=sc.nextInt();
            int m=sc.nextInt();
            int x=sc.nextInt();
            int[] a=new int[n];
            
            for(int i=0;i<n;i++){
                a[i]=sc.nextInt();
            }
            //Arrays.sort(a);
            int[] b=new int[n];
            List<Integer> li=new ArrayList<Integer>();
            for(int i=0;i<m;i++){
                li.add(0);
            }
            int mn=-1;
            for(int i=0;i<n;i++){
                int curm=Integer.MAX_VALUE;
                mn=-1;
                for(int j=0;j<m;j++){
                    if(li.get(j)<curm){
                        curm=li.get(j);
                        mn=j;
                    }
                }
                int val=li.get(mn);
                li.set(mn,val+a[i]);
                b[i]=mn+1;
            }
            boolean flag=true;
            Collections.sort(li);
            int mv=li.get(li.size()-1)-li.get(0);
            if(Math.abs(mv)>x) System.out.println("NO");
            else {
                System.out.println("YES");
                for(int i=0;i<n;i++){
                    System.out.print(b[i]+" ");
                }
                System.out.println();
            }
        }
    }
    
}