#include <bits/stdc++.h>
using namespace std;
const int MAXN = 510;
int mat[MAXN][MAXN];
int n, sum, pos;
bool vis[MAXN][MAXN];
int dir[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
char forwad[4] = {'U', 'R', 'D', 'L'};
char backwad[4] = {'D', 'L', 'U', 'R'};
char ans[MAXN * 10000];
bool isOut(int x, int y) { return (x < 1 || x > n || y < 1 || y > n); }
bool check(int x, int y, int d) {
  while (1) {
    if (isOut(x, y) || vis[x][y]) return false;
    if (mat[x][y]) return true;
    x = x + dir[d][0];
    y = y + dir[d][1];
  }
}
void dfs(int x, int y) {
  if (!mat[x][y]) {
    mat[x][y] = 1;
    ans[pos++] = '1';
    sum++;
  }
  vis[x][y] = true;
  for (int i = 0; i < 4; i++) {
    int tx = x + dir[i][0];
    int ty = y + dir[i][1];
    if (isOut(tx, ty) || vis[tx][ty] || !check(tx, ty, i)) continue;
    ans[pos++] = forwad[i];
    dfs(tx, ty);
    ans[pos++] = backwad[i];
  }
  sum--;
  ans[pos++] = '2';
}
int main() {
  int x, y;
  while (scanf("%d%d%d", &n, &x, &y) != EOF) {
    sum = 0;
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= n; j++) {
        scanf("%d", &mat[i][j]);
        sum += mat[i][j];
      }
    }
    pos = 0;
    memset(vis, false, sizeof(vis));
    dfs(x, y);
    if (sum) {
      puts("NO");
    } else {
      puts("YES");
      ans[pos] = '\0';
      puts(ans);
    }
  }
  return 0;
}
