#include <bits/stdc++.h>
using namespace std;
#define _GLIBCXX_DEBUG
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define all(v) v.begin(), v.end()
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
using ll = long long;
const int INF = 1001001001;
const ll LINF = 1002003004005006007ll;

void solve(){
  int si,sj;
  cin >> si >> sj;
  vector<vector<int> > t(50,vector<int>(50)),p(50,vector<int>(50));
  rep(i,50)rep(j,50)cin >> t[i][j];
  rep(i,50)rep(j,50)cin >> p[i][j];
  set<int> sumi;
  sumi.insert(t[si][sj]);

  while(1){
    if(sj+1<50&&!sumi.count(t[si][sj+1])){
      cout << 'R';
      sj++;
      sumi.insert(t[si][sj]);
      continue;
    }
    else if(si+1<50&&!sumi.count(t[si+1][sj])){
      cout << 'D';
      si++;
      sumi.insert(t[si][sj]);
      continue;
    }
     else if(si-1>=0&&!sumi.count(t[si-1][sj])){
      cout << 'U';
      si--;
      sumi.insert(t[si][sj]);
      continue;
    }
    else if(sj-1>=0&&!sumi.count(t[si][sj-1])){
      cout << 'L';
      sj--;
      sumi.insert(t[si][sj]);
      continue;
    }
    break;
  }
  cout << endl;
}

int main(){
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(16);

  solve();
    return 0;
}
#include <bits/stdc++.h>

using namespace std;

int main(){
	int si, sj; cin >> si >> sj;
    int t[50][50];
    int p[50][50];
    for(int i = 0; i < 50; i++) {
        for(int j = 0; j < 50; j++) {
            cin >> t[i][j];
        }
    }

    for(int i = 0; i < 50; i++) {
        for(int j = 0; j < 50; j++) {
            cin >> p[i][j];
        }
    }
    int vis[50][50]; memset(vis, 0, sizeof vis);
    int dx[4] = {-1,0,1,0};
    int dy[4] = {0, -1, 0, 1};
    string dir = "ULDR";
    int curx = si;
    int cury = sj;
    vis[si][sj] = 1;
    string ans = "";
    set<int> s;
    s.insert(t[si][sj]);
    while(true) {
        
        vector<pair<int, int> > vec;
        for(int i = 0; i < 4; i++) {
            int x = curx + dx[i];
            int y = cury + dy[i]; 
            if(x < 0 or y < 0 or x >= 50 or y >= 50 ) {
                continue;
            }
            if(t[x][y] == t[curx][cury]) continue;
            if(s.count(t[x][y]) > 0) continue;
            vec.push_back(make_pair(p[x][y], i));
        }
        if(vec.size() == 0) break;

        std::random_shuffle(vec.begin(), vec.end());
        
        int i = vec[0].second;
        curx += dx[i];
        cury += dy[i];
        ans += dir[i];
        vis[curx][cury] = 1;
        s.insert(t[curx][cury]);
        

    }
    cout << ans << endl;
	
	return 0;
}
