经历从0到16pts到20pts到32pts到40pts的历程!!!
#include<bits/stdc++.h>
#include<deque>
using namespace std;
const int N=1000005;
int T,n,k,a[N];
deque<int> c,d;
bool ans[N];int len=0;
int main(){
//freopen("palin.in","r",stdin);
//freopen("palin.out","w",stdout);
scanf("%d",&T);
while(T--){
len=0;
c.erase(c.begin(),c.end());
d.erase(d.begin(),d.end());
scanf("%d%d",&n,&a[1]);
for(int i=2;i<=2*n;i++){
scanf("%d",&a[i]);
if(a[i]==a[1])k=i;
}
for(int i=2;i<k;i++){
c.push_back(a[i]);
}
for(int i=k+1;i<=2*n;i++){
d.push_front(a[i]);
}
ans[++len]=0;bool TorF=false;
while(!c.empty()||!d.empty()){
//cout<<len<<endl;
TorF=true;
//cout<<c.front()<<" "<<c.back()<<" "<<d.front()<<" "<<d.back()<<endl;
//cout<<(!c.empty()&&!d.empty())<<endl;
if(!c.empty()&&!d.empty()){
if(c.front()==d.back()){
ans[++len]=0;
ans[2*n-len+1]=1;
c.pop_front();
d.pop_back();
}else if(c.back()==d.front()){
ans[++len]=1;
ans[2*n-len+1]=0;
c.pop_back();
d.pop_front();
}else if(c.front()==c.back()&&c.size()!=1){
ans[++len]=0;
ans[2*n-len+1]=0;
c.pop_front(),c.pop_back();
}else if(d.front()==d.back()&&d.size()!=1){
ans[++len]=1;
ans[2*n-len+1]=1;
d.pop_front(),d.pop_back();
}else{
TorF=false;
break;
}
}else{
if(!c.empty()){
if(c.front()==c.back()){
ans[++len]=0;
ans[2*n-len+1]=0;
c.pop_front(),c.pop_back();
}else{
TorF=false;
break;
}
}else if(!d.empty()){
if(d.front()==d.back()){
ans[++len]=1;
ans[2*n-len+1]=1;
d.pop_front(),d.pop_back();
}else{
TorF=false;
break;
}
}else{
TorF=false;
break;
}
}
}
if(TorF==false){
len=0;
c.erase(c.begin(),c.end());
d.erase(d.begin(),d.end());
for(int i=1;i<=2*n-1;i++){
if(a[i]==a[2*n])k=i;
}
for(int i=1;i<k;i++){
c.push_back(a[i]);
}
for(int i=k+1;i<2*n;i++){
d.push_front(a[i]);
}
ans[++len]=1;
TorF=false;
while(!c.empty()||!d.empty()){
//cout<<len<<endl;
TorF=true;
//cout<<c.front()<<" "<<c.back()<<" "<<d.front()<<" "<<d.back()<<endl;
//cout<<(!c.empty()&&!d.empty())<<endl;
if(!c.empty()&&!d.empty()){
if(c.front()==d.back()){
ans[++len]=0;
ans[2*n-len+1]=1;
c.pop_front();
d.pop_back();
}else if(c.back()==d.front()){
ans[++len]=1;
ans[2*n-len+1]=0;
c.pop_back();
d.pop_front();
}else if(c.front()==c.back()&&c.size()!=1){
ans[++len]=0;
ans[2*n-len+1]=0;
c.pop_front(),c.pop_back();
}else if(d.front()==d.back()&&d.size()!=1){
ans[++len]=1;
ans[2*n-len+1]=1;
d.pop_front(),d.pop_back();
}else{
TorF=false;
break;
}
}else{
if(!c.empty()){
if(c.front()==c.back()){
ans[++len]=0;
ans[2*n-len+1]=0;
c.pop_front(),c.pop_back();
}else{
TorF=false;
break;
}
}else if(!d.empty()){
if(d.front()==d.back()){
ans[++len]=1;
ans[2*n-len+1]=1;
d.pop_front(),d.pop_back();
}else{
TorF=false;
break;
}
}else{
TorF=false;
break;
}
}
}
if(TorF==false){
printf("-1\n");
}else{
for(int i=1;i<=2*n-1;i++){
if(ans[i]==0)printf("L");
else printf("R");
}printf("L\n");
}
}else{
for(int i=1;i<=2*n-1;i++){
if(ans[i]==0)printf("L");
else printf("R");
}printf("L\n");
}
}
return 0;
}