#include <bits/stdc++.h>
using namespace std;
struct edge {
  int x;
  long long y;
};
bool f(edge A, edge B) { return A.y < B.y; }
bool comp(edge a, edge b) { return a.x < b.x; }
string t;
int a[5001][5001] = {0};
long n, m, j;
int c[5] = {0, 1, -1, 0, 0}, d[5] = {0, 0, 0, 1, -1};
bool b[100001] = {0};
bool used[10001][10001] = {0};
vector<edge> hp;
bool f(int k, int i, int j) {
  while (1) {
    k = k + c[j];
    i = i + d[j];
    if (k <= 0 || i <= 0 || k > n || i > n) return 0;
    if (used[k][i]) return 0;
    if (a[k][i]) return 1;
  }
}
void dfs(int k, int i) {
  used[k][i] = 1;
  if (a[k][i] == 0) {
    t += '1';
    a[k][i] = 1;
  }
  for (int k1 = 1; k1 <= 4; ++k1) {
    if (f(k, i, k1)) {
      if (k1 == 1) t += 'D';
      if (k1 == 2) t += 'U';
      if (k1 == 3) t += 'R';
      if (k1 == 4) t += 'L';
      dfs(k + c[k1], i + d[k1]);
      if (k1 == 1) t += 'U';
      if (k1 == 2) t += 'D';
      if (k1 == 3) t += 'L';
      if (k1 == 4) t += 'R';
    }
  }
  if (a[k][i] == 1) {
    t += '2';
    a[k][i] = 0;
  }
  return;
}
int main() {
  long x, y;
  cin >> n >> x >> y;
  for (int k = 1; k <= n; ++k)
    for (int i = 1; i <= n; ++i) cin >> a[k][i];
  dfs(x, y);
  for (int k = 1; k <= n; ++k)
    for (int i = 1; i <= n; ++i)
      if (a[k][i] == 1) {
        cout << "NO";
        return 0;
      }
  cout << "YES" << endl;
  for (int k = 0; k < t.size(); ++k) cout << t[k];
  return 0;
}
