#include <bits/stdc++.h>
using namespace std;
char ans[3000002], tag[501][501];
set<int> S1[501], S2[501];
int n, a[501][501], y_dir[] = {0, 0, 1, -1}, x_dir[] = {1, -1, 0, 0},
                    light_col[501][2], light_row[501][2], n_ans;
void P(char x) { ans[n_ans++] = x; }
void dfs(int x, int y, int from) {
  if (x <= 0 || x > n || y <= 0 || y > n || tag[x][y] == 1) return;
  if (from == 0)
    P('D');
  else if (from == 1)
    P('U');
  else if (from == 2)
    P('R');
  else if (from == 3)
    P('L');
  if (a[x][y] == 0) {
    P('1'), a[x][y] = 1;
    S1[y].insert(x);
    S2[x].insert(y);
  }
  tag[x][y] = 1;
  for (int i = 0; i < 4; i++) {
    if (i < 2 && ((i == 1 && *S1[y].begin() <= x + x_dir[i]) ||
                  (i == 0 && *(--S1[y].end()) >= x + x_dir[i])))
      dfs(x + x_dir[i], y + y_dir[i], i);
    else if (i >= 2 && ((i == 3 && *S2[x].begin() <= y + y_dir[i]) ||
                        (i == 2 && *(--S2[x].end()) >= y + y_dir[i])))
      dfs(x + x_dir[i], y + y_dir[i], i);
  }
  if (a[x][y] == 1) {
    S1[y].erase(x);
    S2[x].erase(y);
    P('2'), a[x][y] = 0;
  }
  if (from == 0)
    P('U');
  else if (from == 1)
    P('D');
  else if (from == 2)
    P('L');
  else if (from == 3)
    P('R');
}
int main() {
  int x, y;
  n_ans = 0;
  scanf("%d%d%d", &n, &x, &y);
  for (int i = 1; i <= n; i++) light_col[i][0] = light_row[i][0] = n + 1;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) {
      scanf("%d", &a[i][j]);
      if (x == i && y == j && a[i][j] == 0) P('1'), a[i][j] = 1;
      if (a[i][j]) {
        S1[j].insert(i);
        S2[i].insert(j);
      }
    }
  if (a[x][y] == 0) P('1'), a[x][y] = 1;
  dfs(x, y, 5);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (a[i][j] == 1) {
        printf("NO\n");
        goto out;
      }
  printf("YES\n");
  for (int i = 0; i < n_ans; i++) printf("%c", ans[i]);
  printf("\n");
out:;
  return 0;
}
