#include <bits/stdc++.h>
#define LSOne(s) ((S) & (-S))

using namespace std;
typedef long long int ll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<bool> vb;
typedef vector<vi> vvi;
typedef vector<vll> vvll;
typedef vector<vb> vvb;

void solve(){
    ll n,i,a,k,t,m,actual,ini,fin;
    cin>>n;
    vector<pair<ll,ll> > datos(n);
    for(i=0;i<n;i++){
        cin>>datos[i].first;
        datos[i].second=i;
    }
    ll conteo=0;
    vector<ll> elementos(n);
    sort(datos.begin(),datos.end());
    conteo=0;
    actual=n;
    ini=0;
    fin=n;
    bool posible=1;
    ll aux;
    ll positivos=0;
    while(ini<fin && actual>0){
        if(conteo<datos[ini].first && ini<fin){
            while(conteo<datos[ini].first && ini<fin){
                aux = fin;
                while(fin>0 && datos[fin-1].first==datos[fin-2].first){
                    elementos[datos[fin-1].second]=actual;
                    fin--;
                    conteo++;
                    positivos++;
                }
                if(fin-ini+positivos!=datos[fin-1].first){
                    posible=0;
                }
                elementos[datos[fin-1].second]=actual;
                fin--;
                conteo++;
                positivos++;
            }
            actual--;
        }
        if(ini>=fin)continue;
        if(actual==0){
            posible=0;
            continue;
        }
        if(conteo==datos[ini].first){
            while(datos[ini].first==datos[ini+1].first && ini<fin-1){
                elementos[datos[ini].second]=-actual;
                ini++;
            }
            elementos[datos[ini].second]=-actual;
            ini++;
        }else{
            posible=0;
        }
        actual--;
    }
    if(posible){
        cout<<"YES\n";
        for(i=0;i<n;i++){
            cout<<elementos[i]<<" ";
        }
        cout<<"\n";
    }else{
        cout<<"NO\n";
    }
}

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    ll t;
    cin>>t;
    while(t--)solve();
    return 0;
}