func_code_string: #include <bits/stdc++.h>   using namespace std;   void read (int &x) {       char ch = getchar(); int f = 0; x = 0;       while (!isdigit(ch)) { if (ch ==  - ) f = 1; ch = getchar(); }       while (isdigit(ch)) x = x * 10 + ch - 48, ch = getchar();       if (f) x = -x;   } const int N = 3e5 + 5;   int n, a[N], f[N], fr[N], d[N], k[N], lg[N];   #define cmax(x, y) (x = x > y ? x : y)   struct ans { int v, w; } ;   struct st {       int c[N][19];       void pre () {           for (int i = 0; i <= n; ++i) c[i][0] = a[i] + i;           for (int i = 1; (1 << i) <= n; ++i)               for (int j = 1; j + (1 << i) - 1 <= n; ++j)                   c[j][i] = max (c[j][i - 1], c[j + (1 << i - 1)][i - 1]);       }       int query (int l, int r) {           if (l > r) return 0; int t = lg[r - l + 1];           // printf ( %d %d %d n , l, r, max (c[l][t], c[r - (1 << t) + 1][t]));           return max (c[l][t], c[r - (1 << t) + 1][t]);       }   } A;   signed main() {       int T; read (T); lg[0] = -1;       for (int i = 1; i <= 300002; ++i) lg[i] = lg[i >> 1] + 1;       while (T--) {           read (n); a[++n] = 0;           for (int i = 1; i < n; ++i) read (a[i]); A.pre ();           for (int i = 0; i <= n; ++i) f[i] = k[i] = fr[i] = 0;           for (int i = 1, l, r, m, j, mx = -1, w = 0; i <= n; ++i) {               l = 0, r = i - 1, j = -1;               while (l <= r) {                   m = l + r >> 1;                   if (f[m] + 1 >= i - a[i]) j = m, r = m - 1;                   else l = m + 1;               }               if (j >= 0) f[i] = max (A.query (j + 1, i - 1), i - 1), fr[i] = j;               if (f[i - 1] >= i && f[i] < i + a[i]) f[i] = i + a[i], fr[i] = i - 1, k[i] = 1;               if (mx > f[i]) f[i] = mx, fr[i] = w; else mx = f[i], w = i;               // printf ( 666 %d %d %d %d n , j, i, f[i], fr[i]);           }           if (f[n] >= n - 1) {               puts ( YES );               for (int i = n; i >= 1; i = fr[i]) {                   for (int j = fr[i] + 1; j < i; ++j) d[j] = 1; d[i] = k[i];               }               for (int i = 1; i < n; ++i) putchar (d[i] ?  R  :  L ); puts (  );           } else puts ( NO );       }   }   