#include<bits/stdc++.h>
using namespace std;
const int arriz=3.3e5;
int T,n,p[arriz],f[arriz],from[arriz];
int lg[arriz],st[20][arriz]; char res[arriz];
void build()
{
    for (int i=1; i<=n; ++i) st[0][i]=i+p[i];
    for (int i=2; i<=n; ++i) lg[i]=lg[i>>1]+1;
    for (int i=1; i<=lg[n]; ++i)
        for (int j=1; j<=n-(1<<i)+1; ++j)
            st[i][j]=max(st[i-1][j],st[i-1][j+(1<<i-1)]);
}
int range_max(int l,int r)
{
    if (l>r) return 0; int k=lg[r-l+1];
    return max(st[k][l],st[k][r-(1<<k)+1]);
}
signed main()
{
    for (scanf("%d",&T); T--;)
    {
        scanf("%d",&n);
        for (int i=1; i<=n; ++i) scanf("%d",p+i);
        build();
        for (int i=1; i<=n; ++i) f[i]=0;
        from[1]=1;
        for (int i=2,t=1; i<=n; ++i)
        {
            if (!p[i])
            {
                f[i]=f[i-1];
                from[i]=i;
                continue;
            }
            t=lower_bound(f,f+i,i-p[i]-1)-f;
            from[i]=t;
            if (t==i) f[i]=f[i-1];
            else
            {
                f[i]=max(i-1,range_max(t+1,i-1));
                if (f[i-1]>f[i]) f[i]=f[i-1],from[i]=i;
                if (f[i-1]>=i&&i+p[i]>f[i]) f[i]=i+p[i],from[i]=i;
            }
        }
        if (f[n]<n) { puts("NO"); continue; }
        puts("YES");
        for (int cur=n; cur;)
        {
            if (from[cur]==cur) res[cur]='R',--cur;
            else
            {
                res[cur]='L';
                for (int i=from[cur]+1; i<cur; ++i) res[i]='R';
                cur=from[cur];
            }
        }
        res[n+1]=0; puts(res+1);
    }
    return 0;
}