#include <bits/stdc++.h>
using namespace std;
#define mpr make_pair
#define fr first
#define sc second
const int N=2005,dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};//上右下左
int n,m,a[N][N];
pair<int,int>lst[N][N];
bitset<N>tmp[N];
void solve(){
cin>>n>>m;
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++){
char ch;
cin>>ch;
a[i][j]=(ch=='1');
lst[i][j]=mpr(0,0);
tmp[i][j]=0;
}
}
queue<pair<int,int> >q;
q.push(mpr(1,1));
string res="";
tmp[1][1]=1;
bool nmsl=0;
while (!q.empty()){
int x=q.front().fr,y=q.front().sc;
q.pop();
// cout<<x<<' '<<y<<' '<<ans<<'\n';
if (nmsl||(x==n&&y==m)){
break;
}
for (int i=0;i<4;i++){
int cx=x+dx[i],cy=y+dy[i];
// cout<<"c: "<<cx<<' '<<cy<<'\n';
if (cx<1||cy<1||cx>n||cy>m) continue;
if (tmp[cx][cy]||(a[x][y]+a[cx][cy])!=1) continue;
q.push(mpr(cx,cy));
if (cx==n&&cy==m) nmsl=1;
lst[cx][cy]=mpr(x,y);
tmp[cx][cy]=1;
}
}
if (lst[n][m].fr==0&&lst[n][m].sc==0) cout<<"-1\n";
else{
string s="";
int x=n,y=m;
while (x!=1||y!=1){
int lx=lst[x][y].fr,ly=lst[x][y].sc;
if (x-lx==1) s='D'+s;
if (x-lx==-1) s='U'+s;
if (y-ly==1) s='R'+s;
if (y-ly==-1) s='L'+s;
x=lx,y=ly;
}
cout<<s.size()<<'\n'<<s<<'\n';
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int T;
cin>>T;
while (T--){
solve();
}
return 0;
}
TLE#16 1关赏