object Solution extends App { import io.StdIn._ val n = readLine.trim.toInt val Array(si, sj, ei, ej) = readLine.trim.split(" +").map(_.toInt) val offsets = Array(("UL", -2, -1), ("UR", -2, 1), ("R", 0, 2), ("LR", 2, 1), ("LL", 2, -1), ("L", 0, -2)) printShortestPath(n, si, sj, ei, ej) def printShortestPath(n: Int, i_start: Int, j_start: Int, i_end: Int, j_end: Int): Unit = { if((i_start-i_end)%2 != 0) println("Impossible") else { val q = scala.collection.mutable.Queue[(Int, Int, List[String])]() q.enqueue((i_start, j_start, Nil)) val visited = scala.collection.mutable.Set[(Int, Int)]() visited += i_start -> j_start while(q.nonEmpty) { val (i, j, steps) = q.dequeue //println(i, j, steps) for((dir, di, dj) <- offsets) { val ni = i+di val nj = j+dj if(ni == i_end && nj == j_end) { println(steps.length+1) println((dir :: steps).reverse.mkString(" ")) return } if(ni>=0 && ni=0 && nj nj)) { visited += ni -> nj q.enqueue((ni, nj, dir::steps)) } } } println("Impossible") } } }