def to_xy(num): dx = (1, 0, -1, 0) dy = (0, 1, 0, -1) k, p, d = 0, 1, 1 x, y = 0, 0 while p < num: for i in range(2): s = min(d, num - p) p += s x += s * dx[k + i] y += s * dy[k + i] k ^= 2 d += 1 return x, y def to_num(x, y): k = max(abs(x), abs(y)) s = k * 2 + 1 if y == -k: return s * s - (s - 1) * 0 - (k - x) elif x == -k: return s * s - (s - 1) * 1 - (k + y) elif y == k: return s * s - (s - 1) * 2 - (k + x) else: return s * s - (s - 1) * 3 - (k - y) # return (command, xor) # xor: except frm num def get_move(frm, to): x, y = frm tx, ty = to command = [] xor = 0 # RUDL while x < tx: x += 1 command.append('R') xor ^= to_num(x, y) while y < ty: y += 1 command.append('U') xor ^= to_num(x, y) while y > ty: y -= 1 command.append('D') xor ^= to_num(x, y) while x > tx: x -= 1 command.append('L') xor ^= to_num(x, y) return command, xor def solve(s, t): _, xor = get_move(s, t) ans = [] if xor != 0: ans += get_move(s, to_xy(xor))[0] ans += get_move(to_xy(xor), s)[0] ans += get_move(s, t)[0] else: _, xor = get_move(t, s) ans += get_move(s, t)[0] ans += get_move(t, to_xy(xor))[0] ans += get_move(to_xy(xor), t)[0] return ''.join(ans) s, t = map(int, input().split()) ans = solve(to_xy(s), to_xy(t)) print(0, len(ans), ans, sep='\n')