Snuke is introducing a robot arm with the following properties to his factory:

* The robot arm consists of m sections and m+1 joints. The sections are numbered 1, 2, ..., m, and the joints are numbered 0, 1, ..., m. Section i connects Joint i-1 and Joint i. The length of Section i is d_i.
* For each section, its mode can be specified individually. There are four modes: `L`, `R`, `D` and `U`. The mode of a section decides the direction of that section. If we consider the factory as a coordinate plane, the position of Joint i will be determined as follows (we denote its coordinates as (x_i, y_i)):
* (x_0, y_0) = (0, 0).
* If the mode of Section i is `L`, (x_{i}, y_{i}) = (x_{i-1} - d_{i}, y_{i-1}).
* If the mode of Section i is `R`, (x_{i}, y_{i}) = (x_{i-1} + d_{i}, y_{i-1}).
* If the mode of Section i is `D`, (x_{i}, y_{i}) = (x_{i-1}, y_{i-1} - d_{i}).
* If the mode of Section i is `U`, (x_{i}, y_{i}) = (x_{i-1}, y_{i-1} + d_{i}).



Snuke would like to introduce a robot arm so that the position of Joint m can be matched with all of the N points (X_1, Y_1), (X_2, Y_2), ..., (X_N, Y_N) by properly specifying the modes of the sections. Is this possible? If so, find such a robot arm and how to bring Joint m to each point (X_j, Y_j).

Constraints

* All values in input are integers.
* 1 \leq N \leq 1000
* -10^9 \leq X_i \leq 10^9
* -10^9 \leq Y_i \leq 10^9

Input

Input is given from Standard Input in the following format:


N
X_1 Y_1
X_2 Y_2
:
X_N Y_N


Output

If the condition can be satisfied, follow the following format. If the condition cannot be satisfied, print `-1`.


m
d_1 d_2 ... d_m
w_1
w_2
:
w_N


m and d_i are the configurations of the robot arm. Refer to the problem statement for what each of them means. Here, 1 \leq m \leq 40 and 1 \leq d_i \leq 10^{12} must hold. Also, m and d_i must all be integers.

w_j is a string of length m that represents the way to bring Joint m of the robot arm to point (X_j, Y_j). The i-th character of w_j should be one of the letters `L`, `R`, `D` and `U`, representing the mode of Section i.

Examples

Input

3
-1 0
0 3
2 -1


Output

2
1 2
RL
UU
DR


Input

5
0 0
1 0
2 0
3 0
4 0


Output

-1


Input

2
1 1
1 1


Output

2
1 1
RU
UR


Input

3
-7 -3
7 3
-3 -7


Output

5
3 1 4 1 5
LRDUL
RDULR
DULRD
#!/usr/bin/env python3
from collections import defaultdict
from collections import deque
from heapq import heappush, heappop
import sys
import math
import bisect
import random
import itertools
sys.setrecursionlimit(10**5)
stdin = sys.stdin
bisect_left = bisect.bisect_left
bisect_right = bisect.bisect_right
def LI(): return list(map(int, stdin.readline().split()))
def LF(): return list(map(float, stdin.readline().split()))
def LI_(): return list(map(lambda x: int(x)-1, stdin.readline().split()))
def II(): return int(stdin.readline())
def IF(): return float(stdin.readline())
def LS(): return list(map(list, stdin.readline().split()))
def S(): return list(stdin.readline().rstrip())
def IR(n): return [II() for _ in range(n)]
def LIR(n): return [LI() for _ in range(n)]
def FR(n): return [IF() for _ in range(n)]
def LFR(n): return [LI() for _ in range(n)]
def LIR_(n): return [LI_() for _ in range(n)]
def SR(n): return [S() for _ in range(n)]
def LSR(n): return [LS() for _ in range(n)]
mod = 1000000007
inf = float('INF')

#A
def A():
    n = S()
    for i in n:
        if i == "1":
            print(9, end="")
        else:
            print(1, end="")
    print()
    return

#B
def B():
    n = II()
    for i in range(111, 1000, 111):
        if n <= i:
            print(i)
            return
    return

#C
def C():
    return

# D
# 解説AC
# 参考: https://atcoder.jp/contests/abc111/submissions/6425569
# 天才か？
# 和の偶奇にしか気づけなかった
def D():
    n = II()
    xy = LIR(n)
    xy_ = [a + b for a, b in xy]
    RULD = ["R", "U", "L", "D"]
    R = 0
    if len(set(map(lambda x: x & 1, xy_))) == 2:
        print(-1)
        return
    ans = [1 << i for i in range(39)]
    f = (xy[0][0] + xy[0][1]) & 1 ^ 1
    if f: ans = [1] + ans
    xy = [[abs(x - f), abs(y), ((x - f) < 0) << 0 | (y < 0) << 1] for x, y in xy]
    lis = []
    for x, y, p in xy:
        b = (x & 1) ^ 1
        tmp = [b]
        for i in range(1,39):
            if b == R:
                if x >> i & 1:
                    if y >> i & 1:
                        k = i
                        while x >> k & 1:
                            x ^= 1 << k
                            k += 1
                        x ^= 1 << k
                        tmp[-1] ^= 2
                        b ^= 1
                        tmp.append(b)
                    else:
                        tmp.append(b)
                else:
                    if y >> i & 1:
                        b ^= 1
                        tmp.append(b)
                    else:
                        tmp[-1] ^= 2
                        tmp.append(b)
            else:
                if y >> i & 1:
                    if x >> i & 1:
                        k = i
                        while y >> k & 1:
                            y ^= 1 << k
                            k += 1
                        y ^= 1 << k
                        tmp[-1] ^= 2
                        b ^= 1
                        tmp.append(b)
                    else:
                        tmp.append(b)
                else:
                    if x >> i & 1:
                        b ^= 1
                        tmp.append(b)
                    else:
                        tmp[-1] ^= 2
                        tmp.append(b)
        for i in range(39):
            if p & 1:
                if tmp[i] & 1 ^ 1:
                    tmp[i] ^= 2
            if p & 2:
                if tmp[i] & 1:
                    tmp[i] ^= 2
        lis.append(map(lambda x: RULD[x], tmp))
    print(39+f)
    print(*ans)
    for a in lis:
        print("R"*f+"".join(a))
    return


#Solve
if __name__ == '__main__':
    D()
