#include <bits/stdc++.h>
using namespace std;
const int maxn = 510;
int n, m;
bool mark[maxn][maxn], a[maxn][maxn];
pair<int, int> par[maxn][maxn];
vector<string> v;
void dfs1(int x, int y) {
  mark[x][y] = 1;
  if (!a[x][y]) v.push_back("1");
  a[x][y] = 1;
  for (int i = x + 1; i < n; i++)
    if (a[i][y] == 1 && !mark[x + 1][y]) {
      v.push_back("D");
      dfs1(x + 1, y);
      v.push_back("U");
    }
  for (int i = 0; i < x; i++)
    if (a[i][y] == 1 && !mark[x - 1][y]) {
      v.push_back("U");
      dfs1(x - 1, y);
      v.push_back("D");
    }
  for (int j = y + 1; j < n; j++)
    if (a[x][j] == 1 && !mark[x][y + 1]) {
      v.push_back("R");
      dfs1(x, y + 1);
      v.push_back("L");
    }
  for (int j = 0; j < y; j++)
    if (a[x][j] == 1 && !mark[x][y - 1]) {
      v.push_back("L");
      dfs1(x, y - 1);
      v.push_back("R");
    }
  return;
}
void dfs2(int x, int y) {
  a[x][y] = 0;
  if (a[x + 1][y] == 1) {
    v.push_back("D");
    dfs2(x + 1, y);
    v.push_back("U");
  }
  if (a[x - 1][y] == 1) {
    v.push_back("U");
    dfs2(x - 1, y);
    v.push_back("D");
  }
  if (a[x][y + 1] == 1) {
    v.push_back("R");
    dfs2(x, y + 1);
    v.push_back("L");
  }
  if (a[x][y - 1] == 1) {
    v.push_back("L");
    dfs2(x, y - 1);
    v.push_back("R");
  }
  v.push_back("2");
}
int main() {
  int x, y;
  cin >> n >> x >> y;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) cin >> a[i][j];
  dfs1(x - 1, y - 1);
  dfs2(x - 1, y - 1);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (a[i][j]) {
        cout << "NO" << endl;
        return 0;
      }
  cout << "YES" << endl;
  for (int i = 0; i < v.size(); i++) cout << v[i];
  return 0;
}
