#include <bits/stdc++.h>
using namespace std;
const int maxn = 250001;
const int maxm = 501;
const int dx[4] = {0, 0, -1, 1};
const int dy[4] = {-1, 1, 0, 0};
int l[maxm][maxm], r[maxm][maxm], u[maxm][maxm], d[maxm][maxm];
int a[maxm][maxm];
int dir[maxn], x[maxn], y[maxn], ch[maxn];
bool vis[maxm][maxm];
bool flag;
int n, m, k;
string ans;
void init() {
  scanf("%d%d%d", &n, &x[1], &y[1]);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) scanf("%d", &a[i][j]);
}
void solve() {
  for (int i = 1; i <= n; i++) {
    k = 0;
    for (int j = 1; j <= n; j++) {
      l[i][j] = k;
      if (a[i][j]) k = j;
    }
  }
  for (int j = 1; j <= n; j++) {
    k = 0;
    for (int i = 1; i <= n; i++) {
      u[i][j] = k;
      if (a[i][j]) k = i;
    }
  }
  for (int i = 1; i <= n; i++) {
    k = n + 1;
    for (int j = n; j; j--) {
      r[i][j] = k;
      if (a[i][j]) k = j;
    }
  }
  for (int j = 1; j <= n; j++) {
    k = n + 1;
    for (int i = n; i; i--) {
      d[i][j] = k;
      if (a[i][j]) k = i;
    }
  }
  dir[1] = 3;
  vis[x[1]][y[1]] = true;
  ans = "";
  for (int i = 1; i; i--) {
    if (!a[x[i]][y[i]]) {
      ans += "1";
      a[x[i]][y[i]] = 1;
    }
    for (; dir[i] >= 0; dir[i]--) {
      flag = false;
      switch (dir[i]) {
        case 0: {
          if (l[x[i]][y[i]] > 0 && !vis[x[i] + dx[dir[i]]][y[i] + dy[dir[i]]] &&
              !vis[x[i]][l[x[i]][y[i]]]) {
            ans += "L";
            flag = true;
            ch[++i] = 'R';
            x[i] = x[i - 1] + dx[dir[i - 1]];
            y[i] = y[i - 1] + dy[dir[i - 1]];
            vis[x[i]][y[i]] = true;
            dir[i] = 3;
          }
        } break;
        case 1: {
          if (r[x[i]][y[i]] <= n &&
              !vis[x[i] + dx[dir[i]]][y[i] + dy[dir[i]]] &&
              !vis[x[i]][r[x[i]][y[i]]]) {
            ans += "R";
            flag = true;
            ch[++i] = 'L';
            x[i] = x[i - 1] + dx[dir[i - 1]];
            y[i] = y[i - 1] + dy[dir[i - 1]];
            vis[x[i]][y[i]] = true;
            dir[i] = 3;
          }
        } break;
        case 2: {
          if (u[x[i]][y[i]] > 0 && !vis[x[i] + dx[dir[i]]][y[i] + dy[dir[i]]] &&
              !vis[u[x[i]][y[i]]][y[i]]) {
            ans += "U";
            flag = true;
            ch[++i] = 'D';
            x[i] = x[i - 1] + dx[dir[i - 1]];
            y[i] = y[i - 1] + dy[dir[i - 1]];
            vis[x[i]][y[i]] = true;
            dir[i] = 3;
          }
        } break;
        case 3: {
          if (d[x[i]][y[i]] <= n &&
              !vis[x[i] + dx[dir[i]]][y[i] + dy[dir[i]]] &&
              !vis[d[x[i]][y[i]]][y[i]]) {
            ans += "D";
            flag = true;
            ch[++i] = 'U';
            x[i] = x[i - 1] + dx[dir[i - 1]];
            y[i] = y[i - 1] + dy[dir[i - 1]];
            vis[x[i]][y[i]] = true;
            dir[i] = 3;
          }
        } break;
      }
      if (flag) break;
    }
    if (flag) {
      i++;
      continue;
    }
    if (a[x[i]][y[i]]) {
      ans += "2";
      a[x[i]][y[i]] = 0;
      if (i > 1) ans += ch[i];
    }
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (a[i][j]) {
        printf("NO\n");
        return;
      }
  printf("YES\n");
  cout << ans << endl;
}
int main() {
  init();
  solve();
  return 0;
}
