#include <bits/stdc++.h>
#pragma GCC optimize("O2")
using namespace std;
inline long long input() {
  long long n;
  cin >> n;
  return n;
}
string base2(long long n) {
  string a = "";
  while (n >= 2) {
    a += (char)(n % 2 + '0');
    n /= 2;
  }
  a += (char)(n + '0');
  reverse((a).begin(), (a).end());
  return a;
}
const int MAXN = 500 + 10;
const int MOD = 1e9 + 7;
const int MOD2 = 998244353;
const long long INF = 8e18;
long long pw(long long a, long long b) {
  return (!b ? 1
             : (b & 1 ? (a * pw(a * a % MOD, b / 2)) % MOD
                      : pw(a * a % MOD, b / 2)));
}
bool M[MAXN][MAXN];
long long n, light[MAXN][MAXN], mark[MAXN][MAXN], mark2[MAXN][MAXN];
vector<pair<int, int> > g[MAXN][MAXN];
set<long long> H[MAXN], V[MAXN];
string ans;
bool check(long long x, long long y) {
  if (1 <= x && x <= n && 1 <= y && y <= n) return 1;
  return 0;
}
void DFS(int x, int y) {
  mark[x][y] = 1;
  if (!light[x][y]) {
    light[x][y] = 1;
    ans += "1";
    V[x].insert(y);
    H[y].insert(x);
  }
  std::set<long long>::iterator itr = H[y].begin();
  if (check(x - 1, y) && !mark[x - 1][y] && itr != H[y].end() &&
      *itr <= x - 1) {
    ans += 'U';
    DFS(x - 1, y);
    ans += '2';
    V[x - 1].erase(y);
    H[y].erase(x - 1);
    ans += 'D';
  }
  itr = H[y].end();
  itr--;
  if (check(x + 1, y) && !mark[x + 1][y] && itr != H[y].end() &&
      *itr >= x + 1) {
    ans += 'D';
    DFS(x + 1, y);
    ans += '2';
    V[x + 1].erase(y);
    H[y].erase(x + 1);
    ans += 'U';
  }
  itr = V[x].begin();
  if (check(x, y - 1) && !mark[x][y - 1] && itr != V[x].end() &&
      *itr <= y - 1) {
    ans += 'L';
    DFS(x, y - 1);
    ans += '2';
    V[x].erase(y - 1);
    H[y - 1].erase(x);
    ans += 'R';
  }
  itr = V[x].end();
  itr--;
  if (check(x, y + 1) && !mark[x][y + 1] && itr != V[x].end() &&
      *itr >= y + 1) {
    ans += 'R';
    DFS(x, y + 1);
    ans += '2';
    V[x].erase(y + 1);
    H[y + 1].erase(x);
    ans += 'L';
  }
  return;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  long long x, y;
  cin >> n >> x >> y;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      cin >> M[i][j];
      light[i][j] = M[i][j];
      if (M[i][j]) {
        V[i].insert(j);
        H[j].insert(i);
      }
    }
  }
  DFS(x, y);
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (!mark[i][j] && M[i][j]) {
        return cout << "NO", 0;
      }
    }
  }
  cout << "YES"
       << "\n";
  cout << ans << 2;
  return 0;
}
