#include <bits/stdc++.h>
using namespace std;
const int N = 555;
int a[N][N], si[N][N], sj[N][N];
int vis[N][N], n;
char ans[3000010];
int ac = 0;
void dfs_v(int i, int j, int d = 1) {
  if (!a[i][j]) ans[ac++] = '1';
  vis[i][j] = d;
  if (si[i - 1][j] && !vis[i - 1][j]) {
    ans[ac++] = 'U';
    dfs_v(i - 1, j, d + 1);
    ans[ac++] = 'D';
  }
  if (si[n][j] - si[i][j] && !vis[i + 1][j]) {
    ans[ac++] = 'D';
    dfs_v(i + 1, j, d + 1);
    ans[ac++] = 'U';
  }
  if (sj[i][j - 1] && !vis[i][j - 1]) {
    ans[ac++] = 'L';
    dfs_v(i, j - 1, d + 1);
    ans[ac++] = 'R';
  }
  if (sj[i][n] - sj[i][j] && !vis[i][j + 1]) {
    ans[ac++] = 'R';
    dfs_v(i, j + 1, d + 1);
    ans[ac++] = 'L';
  }
}
void dfs(int i, int j) {
  int d = vis[i][j];
  vis[i][j] = 0;
  if (i != n && vis[i + 1][j] == d + 1) {
    ans[ac++] = 'D';
    dfs(i + 1, j);
    ans[ac++] = 'U';
  }
  if (i != 1 && vis[i - 1][j] == d + 1) {
    ans[ac++] = 'U';
    dfs(i - 1, j);
    ans[ac++] = 'D';
  }
  if (j != n && vis[i][j + 1] == d + 1) {
    ans[ac++] = 'R';
    dfs(i, j + 1);
    ans[ac++] = 'L';
  }
  if (j != 1 && vis[i][j - 1] == d + 1) {
    ans[ac++] = 'L';
    dfs(i, j - 1);
    ans[ac++] = 'R';
  }
  a[i][j] = 0;
  ans[ac++] = '2';
}
int main() {
  int x0, y0;
  scanf("%d%d%d", &n, &x0, &y0);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= n; ++j) {
      scanf("%d", &a[i][j]);
      si[i][j] = si[i - 1][j] + a[i][j];
      sj[i][j] = sj[i][j - 1] + a[i][j];
    }
  dfs_v(x0, y0);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= n; ++j)
      if (!vis[i][j] && a[i][j]) {
        puts("NO");
        return 0;
      }
  puts("YES");
  dfs(x0, y0);
  ans[ac] = 0;
  puts(ans);
  return 0;
}
