#include <bits/stdc++.h>
using namespace std;
const double PI = 2.0 * acos(0.0);
const double EPS = 1e-6;
int a[505][505];
int idx;
char ope[3000005];
int n;
const int OFF_R[] = {-1, 0, 1, 0};
const int OFF_C[] = {0, 1, 0, -1};
const char DIR[] = {'U', 'R', 'D', 'L'};
bitset<505> visit[505];
inline bool judge(int row, int col, int dir) {
  int nx = row + OFF_R[dir];
  int ny = col + OFF_C[dir];
  while (nx > 0 && nx <= n && ny > 0 && ny <= n) {
    if (a[nx][ny] == 1) return true;
    nx += OFF_R[dir];
    ny += OFF_C[dir];
  }
  return false;
}
void DFS(int row, int col) {
  visit[row][col] = true;
  if (!a[row][col]) {
    a[row][col] = 1;
    ope[idx++] = '1';
  }
  for (int k = 0; k < 4; k++) {
    if (judge(row, col, k)) {
      int nx = row + OFF_R[k];
      int ny = col + OFF_C[k];
      if (!visit[nx][ny]) {
        ope[idx++] = DIR[k];
        DFS(nx, ny);
        ope[idx++] = DIR[(k + 2) % 4];
      }
    }
  }
  a[row][col] = 0;
  ope[idx++] = '2';
}
int main() {
  int x0, y0;
  scanf("%d %d %d", &n, &x0, &y0);
  for (int r = 1; r <= n; r++)
    for (int c = 1; c <= n; c++) scanf("%d", &a[r][c]);
  DFS(x0, y0);
  int cnt = 0;
  for (int r = 1; r <= n; r++)
    for (int c = 1; c <= n; c++) cnt += a[r][c];
  if (cnt > 0)
    puts("NO");
  else {
    puts("YES");
    for (int i = 0; i < idx; i++) putchar(ope[i]);
    puts("");
  }
  return 0;
}
