#include <bits/stdc++.h>
using namespace std;
const int max_n = 511, inf = 1e9 + 100;
bool m[max_n][max_n];
bool vis[max_n][max_n];
int mini[max_n], maxi[max_n];
int minj[max_n], maxj[max_n];
int si, sj;
int n;
int di[] = {0, 0, 1, -1};
int dj[] = {-1, 1, 0, 0};
char dir[] = "LRDU";
string result;
bool on_field(int i, int j) { return i >= 0 && j >= 0 && i < n && j < n; }
void upd_mx(int i, int j) {
  mini[j] = min(mini[j], i);
  maxi[j] = max(maxi[j], i);
  minj[i] = min(minj[i], j);
  maxj[i] = max(maxj[i], j);
}
void dfs(int i, int j) {
  if (vis[i][j]) {
    return;
  }
  vis[i][j] = 1;
  if (m[i][j] == 0) {
    result += '1';
    m[i][j] = 1;
    upd_mx(i, j);
  }
  if (on_field(i - 1, j) && !vis[i - 1][j] && mini[j] < i) {
    result += 'U';
    dfs(i - 1, j);
    result += 'D';
  }
  if (on_field(i + 1, j) && !vis[i + 1][j] && maxi[j] > i) {
    result += 'D';
    dfs(i + 1, j);
    result += 'U';
  }
  if (on_field(i, j - 1) && !vis[i][j - 1] && minj[i] < j) {
    result += 'L';
    dfs(i, j - 1);
    result += 'R';
  }
  if (on_field(i, j + 1) && !vis[i][j + 1] && maxj[i] > j) {
    result += 'R';
    dfs(i, j + 1);
    result += 'L';
  }
}
int main() {
  for (int i = 0; i < max_n; ++i) {
    minj[i] = mini[i] = max_n;
    maxj[i] = maxi[i] = -1;
  }
  cin >> n >> si >> sj;
  --si, --sj;
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      cin >> m[i][j];
      if (m[i][j] == 1) {
        mini[j] = min(mini[j], i);
        maxi[j] = max(maxi[j], i);
        minj[i] = min(minj[i], j);
        maxj[i] = max(maxj[i], j);
      }
    }
  }
  dfs(si, sj);
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      if (m[i][j] && !vis[i][j]) {
        cout << "NO" << endl;
        return 0;
      }
    }
  }
  int fi = si, fj = sj;
  while (si > 0) {
    int upj = -1;
    for (int j = 0; j < n; ++j) {
      if (m[si][j] && m[si - 1][j]) {
        upj = j;
        break;
      }
    }
    if (upj == -1) {
      break;
    }
    while (sj < upj) {
      result += 'R';
      ++sj;
    }
    while (sj > upj) {
      result += 'L';
      --sj;
    }
    result += 'U';
    --si;
  }
  while (si < fi) {
    int dj = -1;
    for (int j = 0; j < n; ++j) {
      if (m[si][j] && m[si + 1][j]) {
        dj = j;
        break;
      }
    }
    if (dj == -1) {
      break;
    }
    while (sj < dj) {
      result += 'R';
      ++sj;
    }
    while (sj > dj) {
      result += 'L';
      --sj;
    }
    while (sj > 0 && m[si][sj - 1]) {
      result += 'L';
      --sj;
    }
    while (sj < dj) {
      result += '2';
      result += 'R';
      ++sj;
    }
    while (sj + 1 < n && m[si][sj + 1]) {
      result += 'R';
      ++sj;
    }
    while (sj > dj) {
      result += '2';
      result += 'L';
      --sj;
    }
    result += '2';
    result += 'D';
    ++si;
  }
  while (si + 1 < n) {
    int dj = -1;
    for (int j = 0; j < n; ++j) {
      if (m[si][j] && m[si + 1][j]) {
        dj = j;
        break;
      }
    }
    if (dj == -1) {
      break;
    }
    while (sj < dj) {
      result += 'R';
      ++sj;
    }
    while (sj > dj) {
      result += 'L';
      --sj;
    }
    result += 'D';
    ++si;
  }
  while (si > fi) {
    int upj = -1;
    for (int j = 0; j < n; ++j) {
      if (m[si][j] && m[si - 1][j]) {
        upj = j;
        break;
      }
    }
    if (upj == -1) {
      break;
    }
    while (sj < upj) {
      result += 'R';
      ++sj;
    }
    while (sj > upj) {
      result += 'L';
      --sj;
    }
    while (sj > 0 && m[si][sj - 1]) {
      result += 'L';
      --sj;
    }
    while (sj < upj) {
      result += '2';
      result += 'R';
      ++sj;
    }
    while (sj + 1 < n && m[si][sj + 1]) {
      result += 'R';
      ++sj;
    }
    while (sj > upj) {
      result += '2';
      result += 'L';
      --sj;
    }
    result += '2';
    result += 'U';
    --si;
  }
  while (sj < fj) {
    result += 'R';
    ++sj;
  }
  while (sj > fj) {
    result += 'L';
    --sj;
  }
  while (sj > 0 && m[si][sj - 1]) {
    result += 'L';
    --sj;
  }
  while (sj < fj) {
    result += '2';
    result += 'R';
    ++sj;
  }
  while (sj + 1 < n && m[si][sj + 1]) {
    result += 'R';
    ++sj;
  }
  while (sj > fj) {
    result += '2';
    result += 'L';
    --sj;
  }
  result += '2';
  if (result.size() > 2e6) {
    exit(228);
  }
  cout << "YES" << endl;
  cout << result << endl;
  return 0;
}
