#include<bits/stdc++.h>
using namespace std;
const int N=3e5+10;
int T,n,p[N],st[N][20],f[N],last[N],d[N];
char ans[N];
inline void ST(){
	for(int i=1;i<=n;++i) st[i][0]=d[i];
	for(int i=1;i<20;++i)
		for(int j=1;j+(1<<i)-1<=n;++j)
			st[j][i]=max(st[j][i-1],st[j+(1<<i-1)][i-1]);
}
inline int getmx(int l,int r){
	if(l>r) return 0;
	int k=log2(r-l+1);
	return max(st[l][k],st[r-(1<<k)+1][k]);
}
inline void upd(int &x,int y){(y>x)&&(x=y);}
int main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		for(int i=1;i<=n;++i) scanf("%d",&p[i]),d[i]=min(i+p[i],n);
		ST();
		memset(f,0,sizeof(int)*(n+1));
		last[1]=1;
		for(int i=2;i<=n;++i){
			if(f[i-1]<i) f[i]=f[i-1],last[i]=i;
			else f[i]=max(f[i-1],d[i]),last[i]=i;
			int t=lower_bound(f,f+i,i-p[i]-1)-f;
			if(t!=i){
				int x=max(f[i-1],d[i]);
				x=max(i-1,getmx(t+1,i-1));
				if(x>f[i]) f[i]=x,last[i]=t;
			}
		}
		if(f[n]<n) puts("NO");
		else{
			puts("YES");
			int now=n;
			while(now>=1){
				if(last[now]==now){ans[now]='R';now--;continue;}
				for(int i=last[now]+1;i<=now-1;++i) ans[i]='R';
				ans[now]='L';  
				now=last[now];
			}
			for(int i=1;i<=n;++i) putchar(ans[i]);puts("");
		}
	}
	return 0;
}
