#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
using namespace std;
int a[500005], b[500005], ff[500005], T, n, t;
string sans, s;
void f(int l, int r, int k){
if(k==2*n+1){
t=1;
sans=min(s, sans);
return ;
}
if(k<=n){
if(!ff[a[l]]){
ff[a[l]]=k;
s+='L';
f(l+1, r, k+1);
s.erase(s.size()-1, 1);
ff[a[l]]=0;
}
if(!ff[a[r]]){
ff[a[r]]=k;
s+='R';
f(l, r-1, k+1);
s.erase(s.size()-1, 1);
ff[a[r]]=0;
}
}
else{
if(ff[a[l]]==n*2+1-k){
ff[a[l]]=k;
s+='L';
f(l+1, r, k+1);
s.erase(s.size()-1, 1);
ff[a[l]]=0;
}
if(ff[a[r]]==n*2+1-k){
ff[a[r]]=k;
s+='R';
f(l, r-1, k+1);
s.erase(s.size()-1, 1);
ff[a[r]]=0;
}
}
}
RT
用ff数组去控制回文,然后暴力搜索。洛谷自测40pts
int main(){
cin>>T;
while(T--){
memset(ff, 0, sizeof(ff));
cin>>n;
s="";
sans="";
t=0;
for(int i=1; i<=2*n; i++)cin>>a[i];
for(int i=0; i<2*n; i++)sans+='R';
f(1, 2*n, 1);
if(t)cout<<sans<<endl;
else cout<<-1<<endl;
}
return 0;
}