func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAX = 505;   int dx[] = {0, 0, 1, -1};   int dy[] = {1, -1, 0, 0};   char dc[] = { R ,  L ,  D ,  U };   string ans;   int n;   bool grid[MAX][MAX], vis[MAX][MAX];   int dp[MAX][MAX][4];   bool valid(int x, int y, int dir) {     return dp[x][y][dir] = ~dp[x][y][dir]                 ? dp[x][y][dir]                            : (!x || !y || x > n || y > n) ? 0                            : grid[x][y]                   ? 1                                         : valid(x + dx[dir], y + dy[dir], dir);   }   void dfs1(int x, int y) {     vis[x][y] = 1;     if (!grid[x][y]) ans +=  1 , grid[x][y] = 1;     for (int i = 0; i < 4; ++i) {       int nx = x + dx[i], ny = y + dy[i];       if (vis[nx][ny] || !valid(nx, ny, i)) continue;       ans += dc[i];       dfs1(nx, ny);       ans += dc[i ^ 1];     }   }   void dfs0(int x, int y) {     grid[x][y] = 0;     for (int i = 0; i < 4; ++i) {       int nx = x + dx[i], ny = y + dy[i];       if (!grid[nx][ny]) continue;       ans += dc[i];       dfs0(nx, ny);       ans += dc[i ^ 1];     }     ans +=  2 ;   }   int main() {     int sx, sy;     memset(dp, -1, sizeof dp);     cin >> n >> sx >> sy;     for (int i = 1; i <= n; ++i) {       vis[0][i] = vis[i][0] = vis[0][n + 1] = vis[n + 1][0] = 1;       for (int j = 1; j <= n; ++j) scanf( %d , grid[i] + j);     }     dfs1(sx, sy);     dfs0(sx, sy);     for (int i = 1; i <= n; ++i)       for (int j = 1; j <= n; ++j)         if (grid[i][j]) return puts( NO ), 0;     puts( YES );     puts(ans.c_str());     return 0;   }   