#include<bits/stdc++.h>
#define MAXM 10005
using namespace std;
int t,m;
int ope_num;
bool mode;
bool copy_status;
int copy_pos1;
string s;
string clip;
string board;
int caret_pos;
//---------------------------------------------
void init()
{
ope_num = s.size();
board.clear();
clip.clear();
caret_pos = 0;
mode = 0;//0 insert 1 overwrite
copy_status = 0;//0 nothing 1 start
}
//---------------------------------------------
int main()
{
//freopen("data.txt","r",stdin);
scanf("%d",&t);
while(t--)
{
scanf("%d",&m);
cin>>s;
init();
for(int step=0;step<ope_num;step++)
{
if(s[step] == 'L')
{
if(caret_pos > 0) caret_pos--;
}
else if(s[step] == 'R')
{
if(caret_pos < board.size()) caret_pos++;
}
else if(s[step] == 'S')
{
if(copy_status == 1)
{
copy_status = 0;
}
mode = !mode;
}
else if(s[step] == 'D')
{
if(copy_status == 1)
{
copy_status = 0;
board.erase(min(caret_pos,copy_pos1),abs(caret_pos - copy_pos1));
caret_pos = min(caret_pos,copy_pos1);
}
else
{
if(caret_pos < board.size())
board.erase(caret_pos,1);
}
}
else if(s[step] == 'B')
{
if(copy_status == 1)
{
copy_status = 0;
}
if(caret_pos > 0)
{
board.erase(caret_pos-1,1);
caret_pos--;
}
}
else if(s[step] == 'C')
{
if(copy_status == 0)
{
copy_status = 1;
copy_pos1 = caret_pos;
}
else
{
copy_status = 0;
clip.clear();
clip = board.substr(min(caret_pos,copy_pos1),abs(caret_pos - copy_pos1));
}
}
else if(s[step] == 'V')
{
if(copy_status == 1)
{
copy_status = 0;
}
if( clip.size()==0 ) continue;
if(mode == 0)
{
if(board.size() + clip.size() > m) continue;
board.insert(caret_pos,clip);
}
else
{
if(caret_pos + clip.size() > m) continue;
board.replace(caret_pos,clip.size(),clip);
}
caret_pos += clip.size();
}
else if(s[step]>='a' && s[step]<='z')
{
if(copy_status == 1)
{
copy_status = 0;
}
if(!(mode == 1 && caret_pos < board.size()))
{
if(board.size() >= m) continue;
}
if(caret_pos < board.size())
{
if(mode == 0)
board.insert(caret_pos,1,s[step]);
else
board[caret_pos] = s[step];
}
else
{
board.append(1,s[step]);
}
caret_pos++;
}
//cout<<s[step]<<'%'<<endl;
//cout<<board<<endl;
//cout<<clip<<endl;
//cout<<caret_pos<<' '<<copy_pos1<<endl;
}
if(board.size() == 0)
cout<<"NOTHING\n";
else
cout<<board<<'\n';
}
return 0;
}