#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("unroll-loops")

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define all(n) n.begin(), n.end()
#define rall(n) n.rbegin(), n.rend()
#define pi pair<int, int>
#define pll pair<ll, ll>

template <class A>
istream& operator>>(istream& in, vector<A>& a)
{
    for (A& i : a)
        in >> i;
    return in;
}
template <class A>
istream& operator>>(istream& in, vector<vector<A>>& a)
{
    for (auto& i : a)
        for (auto& j : i)
            in >> j;
    return in;
}
template <class A>
ostream& operator<<(ostream& in, vector<A>& a)
{
    for (A& i : a)
        in << i << ' ';
    in << endl;
    return in;
}
template <class A>
ostream& operator<<(ostream& in, vector<vector<A>>& a)
{
    for (auto& i : a) {
        for (auto& j : i)
            in << j << ' ';
        in << endl;
    }
    return in;
}

const long long mod = 1e9 + 7;
ll power(ll x, ll y)
{
    ll res = 1;
    while (y > 0) {
        if (y & 1)
            res = (res * x) % mod;
        y >>= 1;
        x = (x * x) % mod;
    }
    return (res % mod);
}

// down right up left
int dx[] = { 1, 0, -1, 0 };
int dy[] = { 0, 1, 0, -1 };

// paste in solve() if req
// ifstream fin("input.txt");
// ofstream fout("output.txt");
void solve()
{
    int n, m, x;
    cin >> n >> m >> x;

    vector<int> v(n);
    cin >> v;

    set<pi> st;
    for (int i = 0; i < m; i++) {
        st.insert({ 0, i + 1 });
    }
    vector<int> ans, mark(m, 0);
    for (int i = 0; i < n; i++) {
        pi p = *st.begin();
        st.erase(p);
        ans.push_back(p.second);
        mark[p.second - 1] += v[i];
        st.insert({ p.first + v[i], p.second });
    }
    sort(all(mark));
    if (mark[m - 1] - mark[0] > x) {
        cout << "NO\n";
    } else {
        cout << "YES\n";
        cout << ans;
    }
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    ll tc = 1;
    cin >> tc;
    for (ll t = 1; t <= tc; t++) {
        //cout << "Case #" << t  << ": ";
        solve();
    }
}