#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
#include <queue>
#include <deque>
#include <bitset>
#include <iterator>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <functional>
#include <numeric>
#include <utility>
#include <limits>
#include <time.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>

#define FAST_IO ios::sync_with_stdio(0); cin.tie(0); 

using namespace std;

unordered_map<int, int> coords;

template<typename VectValue>
ostream& operator<<(ostream& out, const vector<VectValue> &vect)
{
    bool first = true;
    for (const auto &element : vect)
    {
        if (!first) out << " ";
        out << element;
        first = false;
    }
    return out;
}


void solve()
{
   int n, m, x;
   cin >> n >> m >> x;

   vector<pair<int, int>> nums(n);
   for (int i = 0; i < n; ++i)
   {
       int temp;
       cin >> temp;
       nums[i] = make_pair(temp, i);
   }

   sort(nums.begin(), nums.end(), greater<pair<int, int>>());

   vector<int> result(n, 0);
   
   priority_queue<pair<int, int>> q;
   for (int i = 0; i < m; ++i)
   {
       q.push(make_pair(INT_MAX, i));
   }

   for (auto &element : nums)
   {
       auto top_element = q.top(); q.pop();

       if (top_element.first == INT_MAX)
       {
           top_element.first = 0;
       }

       top_element.first -= element.first;
       result [element.second] = top_element.second + 1;

        q.push(top_element);
   }

   int min_element = INT_MAX, max_element = INT_MIN;
   while (q.size() != 0)
   {
       auto element = q.top(); q.pop();
       min_element = min(min_element, -element.first);
       max_element = max(max_element, -element.first);
   }

   if (abs(max_element - min_element) > x)
   {
       cout << "NO" << endl;
   }
   else 
   {
       cout << "YES\n" << result << endl;
   }

}

int main()
{
    FAST_IO


    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
// freopen("output.txt","w",stdout);
    #endif

    int t = 1;
    cin >> t;
    for (int i = 1; i <= t; ++i)
    {
        // cout << "Case #" << i << ": ";
        solve();
    }

}