process.stdin.resume(); process.stdin.setEncoding('ascii'); var input_stdin = ""; var input_stdin_array = ""; var input_currentline = 0; process.stdin.on('data', function (data) { input_stdin += data; }); process.stdin.on('end', function () { input_stdin_array = input_stdin.split("\n"); main(); }); function readLine() { return input_stdin_array[input_currentline++]; } /////////////// ignore above this line //////////////////// var visited = {}; var memo ={}; function printShortestPath(n, i_start, j_start, i_end, j_end) { // Print the distance along with the sequence of moves. var path = move(n, i_start, j_start, i_end, j_end); if(path == null){ console.log("Impossible"); return; } path.reverse(); console.log(path.length); console.log(path.join(" ")); } function move(n, i_start, j_start, i_end, j_end,x,y){ if(isReached(i_start, j_start, i_end, j_end)){ return []; } var location = i_start+"_"+j_start; if(!movePossible(n,i_start, j_start,x,y)){ return null; } if(visited[location]){ return memo[location] || null; } visited[location] = true; //UL var ul = move(n,i_start-2, j_start-1, i_end, j_end,i_start,j_start); //UR var ur = move(n,i_start-2, j_start+1, i_end, j_end,i_start,j_start); //R var r = move(n,i_start, j_start+2, i_end, j_end,i_start,j_start); //LR var lr = move(n,i_start+2, j_start+1, i_end, j_end,i_start,j_start); //LL var ll = move(n,i_start+2, j_start-1, i_end, j_end,i_start,j_start); //L var l = move(n,i_start, j_start-2, i_end, j_end,i_start,j_start); var path = null; if(ul!=null){ ul.push("UL"); path = ul; } if(ur!=null){ ur.push("UR"); if(path == null || path.length>ur.length){ path = ur; } } if(r!=null){ r.push("R"); if(path == null || path.length>r.length){ path = r; } } if(lr!=null){ lr.push("LR"); if(path == null || path.length>lr.length){ path = lr; } } if(ll!=null){ ll.push("LL"); if(path == null || path.length>ll.length){ path = ll; } } if(l!=null){ l.push("L"); if(path == null || path.length>l.length){ path = l; } } memo[location] = path; return path; } function movePossible(n,i, j,x,y){ return (x!=i&&y!=j) &&(i>=0&&j>=0&&i<=n-1&&j<=n-1); } function isReached(i_start, j_start, i_end, j_end){ return i_start === i_end && j_start ===j_end; } function main() { var n = parseInt(readLine()); var i_start_temp = readLine().split(' '); var i_start = parseInt(i_start_temp[0]); var j_start = parseInt(i_start_temp[1]); var i_end = parseInt(i_start_temp[2]); var j_end = parseInt(i_start_temp[3]); printShortestPath(n, i_start, j_start, i_end, j_end); }