operator fun Int.not() = if (this != 0) false else true
operator fun Int.plus(other: Boolean) = this + if (other) 1 else 0
data class Point(val x: Int, val y: Int) {
    constructor(xy: List<Int>): this(xy[0], xy[1])
}
fun main(args: Array<String>) {
    val N = nextInt()
    val XY = Array<Point>(N) { Point(listOfInt()) }
    val odd = (Math.abs(XY.first().x) + Math.abs(XY.first().y)) % 2
    if (XY.any { (Math.abs(it.x) + Math.abs(it.y)) % 2 != odd }) {
        println(-1); return
    }
    println(31 + !odd)
    if (!odd) print("1 ")
    for (b in 30 downTo 0) {
        print("${1 shl b}${if (b == 0) '\n' else ' '}")
    }
    for (xy in XY) {
        val buf =  StringBuilder()
        var (x, y) = xy
        if (!odd) {
            x -= 1
            print("R")
        }
        for (b in 30 downTo 0) {
            val t = 1 shl b
            if (Math.abs(x) < Math.abs(y)) {
                if (y > 0) {
                    y -= t
                    buf.append("U")
                } else {
                    y += t
                    buf.append("D")
                }
            } else {
                if (x > 0) {
                    x -= t
                    buf.append("R")
                } else {
                    x += t
                    buf.append("L")
                }
            }
        }
        println(buf.toString())
    }
}
fun next() = readLine()!!
fun nextInt() = Integer.parseInt(next())
fun listOfString() = next().split(" ")
fun listOfInt() = listOfString().map { Integer.parseInt(it) }
fun listOfLong() = listOfString().map { java.lang.Long.parseLong(it) }
