#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:100000000000000")
using namespace std;
int mr[] = {-1, 0, 1, 0}, mc[] = {0, 1, 0, -1}, n, x, y, tot;
bool vis[501][501], b[501][501];
char dir[] = {'U', 'R', 'D', 'L'};
string p;
set<int> col[501], row[501];
void DFS(int r, int c) {
  vis[r][c] = 1;
  tot += b[r][c];
  if (b[r][c] == 0) p += "1";
  b[r][c] = 1;
  row[r].insert(c);
  col[c].insert(r);
  for (int i = 0; i < 4; i++) {
    if (i == 0) {
      if (col[c].size() == 0) continue;
      if (*col[c].begin() >= r) continue;
    } else if (i == 1) {
      if (row[r].size() == 0) continue;
      set<int>::iterator it = row[r].upper_bound(c);
      if (it == row[r].end()) continue;
    } else if (i == 2) {
      if (col[c].size() == 0) continue;
      set<int>::iterator it = col[c].upper_bound(r);
      if (it == col[c].end()) continue;
    } else {
      if (row[r].size() == 0) continue;
      if (*row[r].begin() >= c) continue;
    }
    int nr = r + mr[i], nc = c + mc[i];
    if (nr >= n || nc >= n || nc < 0 || nr < 0 || vis[nr][nc]) continue;
    p += dir[i];
    DFS(nr, nc);
    p += dir[(i + 2) % 4];
  }
  row[r].erase(c);
  col[c].erase(r);
  p += '2';
  b[r][c] = 0;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> x >> y;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) cin >> b[i][j];
  int cnt = 0;
  p = "";
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (b[i][j]) cnt++, col[j].insert(i), row[i].insert(j);
  x--, y--;
  DFS(x, y);
  if (tot != cnt)
    cout << "NO";
  else {
    cout << "YES\n";
    cout << p;
  }
  return 0;
}
