#include <bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimization("O3")
#pragma GCC optimization("unroll-loops")
using namespace std;
template <class T1, class T2>
ostream &operator<<(ostream &os, const pair<T1, T2> &p) {
  os << "{" << p.first << "," << p.second << "}";
  return os;
}
const int N = 500 + 5;
const int oo = 1e9 + 7;
int on[N][N];
int state[N][N];
int n;
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
const string dir = "DRUL";
string s;
bool isin(int x, int y) { return 1 <= x and x <= n and 1 <= y and y <= n; }
void dfs(int x, int y) {
  state[x][y] = 1;
  if (on[x][y] == 0) s += '1';
  for (int j = 0; j < 4; j++) {
    bool pos = 0;
    int xx = x + dx[j], yy = y + dy[j];
    while (isin(xx, yy)) {
      if (state[xx][yy] > 0) break;
      if (state[xx][yy] == 0 and on[xx][yy] == 1) {
        pos = 1;
        break;
      }
      xx += dx[j];
      yy += dy[j];
    }
    if (pos) {
      s += dir[j];
      dfs(x + dx[j], y + dy[j]);
      s += dir[j ^ 2];
    }
  }
  s += '2';
  state[x][y] = 2;
}
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int x, y;
  cin >> n >> x >> y;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) cin >> on[i][j];
  }
  dfs(x, y);
  bool pos = 1;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (on[i][j] == 1 and state[i][j] == 0) pos = 0;
    }
  }
  if (pos)
    cout << "YES\n" << s << "\n";
  else
    cout << "NO\n";
}
