#include <bits/stdc++.h>
using namespace std;
const int T = 505;
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};
char ch[4] = {'D', 'R', 'U', 'L'};
int d[T][T];
char fix[T][T];
int sul, i, j, n, stx, sty;
int l;
char ans[T * T * 10];
void go(int x, int y) {
  fix[x][y] = 1;
  if (!d[x][y]) {
    d[x][y] = 1;
    sul--;
    ans[l++] = '1';
  }
  for (int k = 0; k < 4; k++) {
    int addx = dx[k];
    int addy = dy[k];
    int xx = x;
    int yy = y;
    while (1) {
      xx += addx;
      yy += addy;
      if (xx < 0 || xx >= n) break;
      if (yy < 0 || yy >= n) break;
      if (d[xx][yy]) {
        if (!fix[x + addx][y + addy]) {
          ans[l++] = ch[k];
          go(x + addx, y + addy);
          ans[l++] = ch[(k + 2) % 4];
        }
        break;
      }
    }
  }
  sul++;
}
void go2(int x, int y) {
  fix[x][y] = 1;
  if (!d[x][y]) {
    d[x][y] = 1;
    sul--;
    ans[l++] = '1';
  }
  for (int k = 0; k < 4; k++) {
    int addx = dx[k];
    int addy = dy[k];
    int xx = x;
    int yy = y;
    while (1) {
      xx += addx;
      yy += addy;
      if (xx < 0 || xx >= n) break;
      if (yy < 0 || yy >= n) break;
      if (d[xx][yy]) {
        if (!fix[x + addx][y + addy]) {
          ans[l++] = ch[k];
          go2(x + addx, y + addy);
          ans[l++] = ch[(k + 2) % 4];
        }
        break;
      }
    }
  }
  ans[l++] = '2';
}
int main() {
  int have = 0;
  scanf("%d %d %d", &n, &stx, &sty);
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++) scanf("%d", &d[i][j]), have += d[i][j];
  go(stx - 1, sty - 1);
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++) fix[i][j] = 0;
  go2(stx - 1, sty - 1);
  if (sul != have) {
    cout << "NO" << endl;
    return 0;
  }
  cout << "YES" << endl;
  for (i = 0; i < l; i++) printf("%c", ans[i]);
  printf("\n");
}
