#include <iostream>
#include <vector>
#include <string>
using namespace std;
class simulator {
public:
simulator(const vector<string> &board) {
if (board.size() < 3) {
throw invalid_argument("invalid board height");
}
if (board[0].size() < 3) {
throw invalid_argument("invalid board width");
}
for (auto &row : board) {
if (row.size() != board[0].size()) {
throw invalid_argument("inconsistent board width");
}
vector<int> t;
for (char ch : row) {
if (ch == 'W') {
t.push_back(0);
}
else if (ch == 'R') {
t.push_back(1);
}
else {
throw invalid_argument("invalid element");
}
}
b.push_back(t);
}
x = -1;
y = height() - 1;
c = -1;
}
int height() const {
return b.size();
}
int width() const {
return b[0].size();
}
string history() const {
return h;
}
bool red() const {
return c == 1;
}
void move(const string &dirs, unsigned int repeat = 1) {
while (repeat--) {
for (auto d : dirs) {
move(d);
}
}
}
private:
void move(char d) {
switch (d) {
case 'L': --x; break;
case 'R': ++x; break;
case 'U': --y; break;
case 'D': ++y; break;
default: throw invalid_argument("invalid direction");
}
c = b.at(y).at(x) = (b.at(y).at(x) + 1) % 2;
h += d;
}
vector<vector<int>> b;
int x, y, c;
string h;
};
void sub(simulator &s) {
for (int i = 0; i < s.width() - 1; ++i) {
if (s.red()) {
s.move("RDLU");
}
s.move("R");
}
if (s.red()) {
s.move("DLLURDLURR");
}
s.move("D");
}
string solve(const vector<string> &board) {
simulator s(board);
s.move("R");
s.move("U", s.height() - 1);
for (int i = 0; i < s.height() - 2; ++i) {
sub(s);
s.move("D");
s.move("L", s.width() - 1);
s.move("U");
}
sub(s);
for (int i = 0; i < s.width() - 1; ++i) {
if (s.red()) {
s.move("LUURDLURDD");
}
s.move("L");
}
if (s.red()) {
s.move("URDLURD");
}
return s.history();
}
int main() {
for (int h; (cin >> h) && (h >= 3); ) {
vector<string> board(h);
for (auto &s : board) {
cin >> s;
}
string path = solve(board);
for (auto &s : board) {
cout << s << endl;
}
cout << "=> " << path.size() << " " << path << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIHNpbXVsYXRvciB7CnB1YmxpYzoKCXNpbXVsYXRvcihjb25zdCB2ZWN0b3I8c3RyaW5nPiAmYm9hcmQpIHsKCQlpZiAoYm9hcmQuc2l6ZSgpIDwgMykgewoJCQl0aHJvdyBpbnZhbGlkX2FyZ3VtZW50KCJpbnZhbGlkIGJvYXJkIGhlaWdodCIpOwoJCX0KCQlpZiAoYm9hcmRbMF0uc2l6ZSgpIDwgMykgewoJCQl0aHJvdyBpbnZhbGlkX2FyZ3VtZW50KCJpbnZhbGlkIGJvYXJkIHdpZHRoIik7CgkJfQoJCWZvciAoYXV0byAmcm93IDogYm9hcmQpIHsKCQkJaWYgKHJvdy5zaXplKCkgIT0gYm9hcmRbMF0uc2l6ZSgpKSB7CgkJCQl0aHJvdyBpbnZhbGlkX2FyZ3VtZW50KCJpbmNvbnNpc3RlbnQgYm9hcmQgd2lkdGgiKTsKCQkJfQoJCQl2ZWN0b3I8aW50PiB0OwoJCQlmb3IgKGNoYXIgY2ggOiByb3cpIHsKCQkJCWlmIChjaCA9PSAnVycpIHsKCQkJCQl0LnB1c2hfYmFjaygwKTsKCQkJCX0KCQkJCWVsc2UgaWYgKGNoID09ICdSJykgewoJCQkJCXQucHVzaF9iYWNrKDEpOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJdGhyb3cgaW52YWxpZF9hcmd1bWVudCgiaW52YWxpZCBlbGVtZW50Iik7CgkJCQl9CgkJCX0KCQkJYi5wdXNoX2JhY2sodCk7CgkJfQoJCXggPSAtMTsKCQl5ID0gaGVpZ2h0KCkgLSAxOwoJCWMgPSAtMTsKCX0KCglpbnQgaGVpZ2h0KCkgY29uc3QgewoJCXJldHVybiBiLnNpemUoKTsKCX0KCglpbnQgd2lkdGgoKSBjb25zdCB7CgkJcmV0dXJuIGJbMF0uc2l6ZSgpOwoJfQoKCXN0cmluZyBoaXN0b3J5KCkgY29uc3QgewoJCXJldHVybiBoOwoJfQoKCWJvb2wgcmVkKCkgY29uc3QgewoJCXJldHVybiBjID09IDE7Cgl9CgoJdm9pZCBtb3ZlKGNvbnN0IHN0cmluZyAmZGlycywgdW5zaWduZWQgaW50IHJlcGVhdCA9IDEpIHsKCQl3aGlsZSAocmVwZWF0LS0pIHsKCQkJZm9yIChhdXRvIGQgOiBkaXJzKSB7CgkJCQltb3ZlKGQpOwoJCQl9CgkJfQoJfQoKcHJpdmF0ZToKCXZvaWQgbW92ZShjaGFyIGQpIHsKCQlzd2l0Y2ggKGQpIHsKCQljYXNlICdMJzogLS14OyBicmVhazsKCQljYXNlICdSJzogKyt4OyBicmVhazsKCQljYXNlICdVJzogLS15OyBicmVhazsKCQljYXNlICdEJzogKyt5OyBicmVhazsKCQlkZWZhdWx0OiB0aHJvdyBpbnZhbGlkX2FyZ3VtZW50KCJpbnZhbGlkIGRpcmVjdGlvbiIpOwoJCX0KCQljID0gYi5hdCh5KS5hdCh4KSA9IChiLmF0KHkpLmF0KHgpICsgMSkgJSAyOwoJCWggKz0gZDsKCX0KCgl2ZWN0b3I8dmVjdG9yPGludD4+IGI7CglpbnQgeCwgeSwgYzsKCXN0cmluZyBoOwp9OwoKdm9pZCBzdWIoc2ltdWxhdG9yICZzKSB7Cglmb3IgKGludCBpID0gMDsgaSA8IHMud2lkdGgoKSAtIDE7ICsraSkgewoJCWlmIChzLnJlZCgpKSB7CgkJCXMubW92ZSgiUkRMVSIpOwoJCX0KCQlzLm1vdmUoIlIiKTsKCX0KCWlmIChzLnJlZCgpKSB7CgkJcy5tb3ZlKCJETExVUkRMVVJSIik7Cgl9CglzLm1vdmUoIkQiKTsKfQoKc3RyaW5nIHNvbHZlKGNvbnN0IHZlY3RvcjxzdHJpbmc+ICZib2FyZCkgewoJc2ltdWxhdG9yIHMoYm9hcmQpOwoKCXMubW92ZSgiUiIpOwoJcy5tb3ZlKCJVIiwgcy5oZWlnaHQoKSAtIDEpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBzLmhlaWdodCgpIC0gMjsgKytpKSB7CgkJc3ViKHMpOwoJCXMubW92ZSgiRCIpOwoJCXMubW92ZSgiTCIsIHMud2lkdGgoKSAtIDEpOwoJCXMubW92ZSgiVSIpOwoJfQoJc3ViKHMpOwoKCWZvciAoaW50IGkgPSAwOyBpIDwgcy53aWR0aCgpIC0gMTsgKytpKSB7CgkJaWYgKHMucmVkKCkpIHsKCQkJcy5tb3ZlKCJMVVVSRExVUkREIik7CgkJfQoJCXMubW92ZSgiTCIpOwoJfQoKCWlmIChzLnJlZCgpKSB7CgkJcy5tb3ZlKCJVUkRMVVJEIik7Cgl9CgoJcmV0dXJuIHMuaGlzdG9yeSgpOwp9CgppbnQgbWFpbigpIHsKCWZvciAoaW50IGg7IChjaW4gPj4gaCkgJiYgKGggPj0gMyk7ICkgewoJCXZlY3RvcjxzdHJpbmc+IGJvYXJkKGgpOwoJCWZvciAoYXV0byAmcyA6IGJvYXJkKSB7CgkJCWNpbiA+PiBzOwoJCX0KCQlzdHJpbmcgcGF0aCA9IHNvbHZlKGJvYXJkKTsKCQlmb3IgKGF1dG8gJnMgOiBib2FyZCkgewoJCQljb3V0IDw8IHMgPDwgZW5kbDsKCQl9CgkJY291dCA8PCAiPT4gIiA8PCBwYXRoLnNpemUoKSA8PCAiICIgPDwgcGF0aCA8PCBlbmRsOwoJfQp9Cg==
MwpXV1cKV1dXCldXVwo0ClJSUgpSUlIKUlJSClJSUgo1ClJXV1dSCldSV1dXClJXUldXClJXV1JXCldSUldSCjEwClJXUldSV1JXUlcKV1JXUldSV1JXUgpSV1JXUldSV1JXCldSV1JXUldSV1IKUldSV1JXUldSVwpXUldSV1JXUldSClJXUldSV1JXUlcKV1JXUldSV1JXUgpSV1JXUldSV1JXCldSV1JXUldSV1IKMAo=
3
WWW
WWW
WWW
4
RRR
RRR
RRR
RRR
5
RWWWR
WRWWW
RWRWW
RWWRW
WRRWR
10
RWRWRWRWRW
WRWRWRWRWR
RWRWRWRWRW
WRWRWRWRWR
RWRWRWRWRW
WRWRWRWRWR
RWRWRWRWRW
WRWRWRWRWR
RWRWRWRWRW
WRWRWRWRWR
0