#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while(t--){
int n;
cin >> n;
vector<int> p(n);
for(int i = 0; i < n; i++){
cin >> p[i];
}
int l = 0, r = n - 1;
vector<int> q;
q.reserve(n);
string ans;
ans.reserve(n);
auto can_push = [&](int x) {
int k = static_cast<int>(q.size());
if(k < 4) return true;
bool inc = true, dec = true;
for(int i = k-4; i + 1 < k; i++){
if(q[i] >= q[i+1]) inc = false;
if(q[i] <= q[i+1]) dec = false;
}
if(inc && q[k-1] < x) return false;
if(dec && q[k-1] > x) return false;
return true;
};
auto ok = [&](int x, int l2, int r2) {
int k = static_cast<int>(q.size()) + 1;
if(k < 4) return true;
array<int,4> l4{};
if(static_cast<int>(q.size()) >= 4){
for(int i = 0; i < 3; i++){
l4[i] = q[q.size() - 3 + i];
}
} else {
for(int i = 0; i < 3; i++){
l4[i] = q[i];
}
}
l4[3] = x;
bool inc = true, dec = true;
for(int i = 0; i < 3; i++){
if(l4[i] >= l4[i+1]) inc = false;
if(l4[i] <= l4[i+1]) dec = false;
}
if(!inc && !dec) return true;
int yL = p[l2], yR = p[r2];
if(inc) {
bool cL = yL <= l4[3];
bool cR = yR <= l4[3];
return cL || cR;
}
bool cL = yL >= l4[3];
bool cR = yR >= l4[3];
return cL || cR;
};
for(int step = 0; step < n; step++){
int xL = p[l], xR = p[r];
const bool okL = can_push(xL);
const bool okR = can_push(xR);
const bool sL = okL && (step == n-1 || ok(xL, l+1, r));
bool sR = okR && (step == n-1 || ok(xR, l, r-1));
char pick;
if(sL && !sR) {
pick = 'L';
} else if(sR && !sL){
pick = 'R';
} else if(sL && sR){
pick = xL < xR ? 'L' : 'R';
} else {
pick = 'L';
}
ans.push_back(pick);
if(pick == 'L'){
q.push_back(xL);
l++;
} else {
q.push_back(xR);
r--;
}
}
cout << ans << "\n";
}
return 0;
}