local mfl, mce = math.floor, math.ceil local h, w = io.read("*n", "*n") local k, l, r = io.read("*n", "*n", "*n", "*l") local t = {} local len = {} for i = 1, h do t[i] = {} len[i] = {} local s = io.read() for j = 1, w do t[i][j] = s:sub(j, j) == "#" len[i][j] = -999 end end local minlen = h + w - 2 if (minlen + k) % 2 == 1 then print("No") os.exit() end if (r - l) % 2 == 0 then print("No") os.exit() end len[1][1] = 0 local tasks = {1} local done = 0 local function walk(dst, dr, dc, l) if not t[dr][dc] and len[dr][dc] < 0 then len[dr][dc] = l table.insert(tasks, dst) end end while done < #tasks do done = done + 1 local src = tasks[done] local row = mce(src / w) local col = src - (row - 1) * w local l2 = len[row][col] + 1 if 1 < row then walk(src - w, row - 1, col, l2) end if row < h then walk(src + w, row + 1, col, l2) end if 1 < col then walk(src - 1, row, col - 1, l2) end if col < w then walk(src + 1, row, col + 1, l2) end end if len[h][w] < 0 or k - (r - l + 1) < len[h][w] then print("No") os.exit() end print("Yes") local ans = {} local ph, pw = h, w while 1 < ph or 1 < pw do if 1 < ph and len[ph - 1][pw] + 1 == len[ph][pw] then table.insert(ans, "D") ph = ph - 1 elseif ph < h and len[ph + 1][pw] + 1 == len[ph][pw] then table.insert(ans, "U") ph = ph + 1 elseif 1 < pw and len[ph][pw - 1] + 1 == len[ph][pw] then table.insert(ans, "R") pw = pw - 1 else table.insert(ans, "L") pw = pw + 1 end end ans = table.concat(ans):reverse() local rep = mfl((k - len[h][w]) / 2) if l == 1 then if ans:sub(1, 1) == "R" then print(string.rep("RL", rep) .. ans) else print(string.rep("DU", rep) .. ans) end else io.write(ans:sub(1, l - 1)) local b = ans:sub(l - 1, l - 1) if b == "R" then io.write(string.rep("LR", rep)) elseif b == "L" then io.write(string.rep("RL", rep)) elseif b == "D" then io.write(string.rep("UD", rep)) else io.write(string.rep("DU", rep)) end io.write(ans:sub(l, #ans) .. "\n") io.flush() end