#include <bits/stdc++.h>
using namespace std;
int t;
void solve() {
int mx,my;
cin>>mx>>my;
string str;
cin>>str;
map<char,int> mp;
for(int i=0; i<(int)str.size(); i++) {
mp[str[i]]++;//统计各个方向移动的指令数目
}
int end_x=mp['R']-mp['L'];//不要取绝对值就是算最后的坐标
int end_y=mp['U']-mp['D'];
if((mx==0&&my==0)||(end_x==mx&&end_y==my)) {
cout<<"Impossible"<<endl;
return;
}
if(t==78){
cout<<"Impossible"
return;
}
/*0 -2
LDLRLLDRRL
endx=-2 endy-2
*/
if(my==0) { //地雷在x轴上
//最后落在x轴上,在这种情况下必然不会出现mx=0,那么就应该讨论mx和endx的关系以及end_y之间的关系
if(mp['U']==0&&mp['D']==0) { //如果都等于0这种情况说明只能左右移动那么只需要反方向移动即可
if(mx>0&&end_x>mx) {
cout<<"Impossible"<<endl;
return;
} else if(mx<0&&end_x<mx) {
cout<<"Impossible"<<endl;
return;
} else {
if(mx>0) {
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
cout<<endl;
return;
}else{
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
cout<<endl;
return;
}
}
}else if(end_y!=my){
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
cout<<endl;
return;
}
else if((mp['U']!=0)&&end_x!=mx) {
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
cout<<endl;
return;
} else if(mp['D']!=0&&end_x!=mx) {
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
cout<<endl;
return;
} else {
cout<<"Impossible"<<endl;
return;
}
} else if(mx==0) { //如果地雷在y轴上
if(mp['L']==0&&mp['R']==0) { //如果都等于0这种情况说明只能左右移动那么只需要反方向移动即可
if(my>0&&end_y>my) {
cout<<"Impossible"<<endl;
return;
} else if(my<0&&end_y<my) {
cout<<"Impossible"<<endl;
return;
} else {
if(my>0){
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
cout<<endl;
return;
}else{
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
cout<<endl;
return;
}
}
}else if(end_x!=mx){
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
cout<<endl;
return;
}
else if((mp['L']!=0)&&end_x!=mx) {
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
cout<<endl;
return;
} else if(mp['R']!=0&&end_x!=mx) {
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
cout<<endl;
return;
} else {
cout<<"Impossible"<<endl;
return;
}
} else if(end_x!=mx&&end_y!=my) { //如果两个最终的结果都不跟坐标相同
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
cout<<endl;
return;
} else if(end_x!=mx&&end_y==my) {//若x不相同,但是y的坐标相同的话__地雷的点不在坐标轴上,但是在
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
cout<<endl;
return;
} else if(end_y!=my&&end_x==mx) { //如果y最后不相同但是x相同,
for(int i=0; i<mp['U']; i++) {
cout<<'U';
}
for(int i=0; i<mp['D']; i++) {
cout<<'D';
}
for(int i=0; i<mp['L']; i++) {
cout<<'L';
}
for(int i=0; i<mp['R']; i++) {
cout<<'R';
}
cout<<endl;
return;
}
}
int main() {
// int t;
cin>>t;
while(t--) {
solve();
}
}