output_description: 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.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      X_1 Y_1
      X_2 Y_2
      :
      X_N Y_N
attempt: #include <cstdio>
  #include <cstdlib>
  #include <cmath>
  #include <cstring>
  
  #include <iostream>
  #include <complex>
  #include <string>
  #include <algorithm>
  #include <numeric>
  #include <vector>
  #include <queue>
  #include <stack>
  #include <map>
  #include <set>
  #include <unordered_map>
  #include <unordered_set>
  
  #include <functional>
  #include <cassert>
  
  typedef long long ll;
  using namespace std;
  
  #ifndef LOCAL
  #define debug(x) ;
  #else
  #define debug(x) cerr << __LINE__ << " : " << #x << " = " << (x) << endl;
  
  template <typename T1, typename T2>
  ostream &operator<<(ostream &out, const pair<T1, T2> &p) {
    out << "{" << p.first << ", " << p.second << "}";
    return out;
  }
  
  template <typename T>
  ostream &operator<<(ostream &out, const vector<T> &v) {
    out << '{';
    for (const T &item : v) out << item << ", ";
    out << "\b\b}";
    return out;
  }
  #endif
  
  #define mod 1000000007 //1e9+7(prime number)
  #define INF 1000000000 //1e9
  #define LLINF 2000000000000000000LL //2e18
  #define SIZE 200010
  
  
  int main(){
    int n, x[SIZE], y[SIZE];
  
    scanf("%d", &n);
  
    bool ok = true;
  
    for(int i=0;i<n;i++){
      scanf("%d%d", x+i, y+i);
      ok &= !(x[i]+y[i]) == !(x[0]+y[0]);
    }
  
    if (!ok) {
      puts("-1");
      return 0;
    }
  
    for(int i=0;i<n;i++){
      int tmp = x[i] + y[i];
      y[i] = x[i] - y[i];
      x[i] = tmp;
    }
  
    int m = !x[0] + 31;
    ll d[40];
  
    for(int i=0;i<31;i++){
      d[i] = 1LL << (30 - i);
    }
  
    if(m == 32) d[31] = 1;
  
    printf("%d\n", m);
    for(int i=0;i<m;i++)
      printf("%lld%c", d[i], " \n"[m==i+1]);
  
    for(int i=0;i<n;i++){
      bool ans1[40], ans2[40];
      ll X = x[i], Y = y[i];
  
      for(int j=0;j<m;j++){
        ans1[j] = X >= 0;
        ans2[j] = Y >= 0;
  
        if(ans1[j]) X -= d[j];
        else X += d[j];
  
        if(ans2[j]) Y -= d[j];
        else Y += d[j];
      }
  
      assert(X == 0 && Y == 0);
  
      for(int j=0;j<m;j++){
        printf("%c", "RUDL"[ans1[j]*2+ans2[j]]);
      }
      puts("");
    }
  
  
    return 0;
  }
  
problem_description: Statement
  
  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).
samples: [{"input": "3\n    -1 0\n    0 3\n    2 -1", "output": "2\n    1 2\n    RL\n    UU\n    DR\n    \n\nIn the given way to bring Joint m of the robot arm to each (X_j, Y_j), the\npositions of the joints will be as follows:\n\n  * To (X_1, Y_1) = (-1, 0): First, the position of Joint 0 is (x_0, y_0) = (0, 0). As the mode of Section 1 is `R`, the position of Joint 1 is (x_1, y_1) = (1, 0). Then, as the mode of Section 2 is `L`, the position of Joint 2 is (x_2, y_2) = (-1, 0).\n  * To (X_2, Y_2) = (0, 3): (x_0, y_0) = (0, 0), (x_1, y_1) = (0, 1), (x_2, y_2) = (0, 3).\n  * To (X_3, Y_3) = (2, -1): (x_0, y_0) = (0, 0), (x_1, y_1) = (0, -1), (x_2, y_2) = (2, -1).\n\n* * *"}, {"input": "5\n    0 0\n    1 0\n    2 0\n    3 0\n    4 0", "output": "-1\n    \n\n* * *"}, {"input": "2\n    1 1\n    1 1", "output": "2\n    1 1\n    RU\n    UR\n    \n\nThere may be duplicated points among (X_j, Y_j).\n\n* * *"}, {"input": "3\n    -7 -3\n    7 3\n    -3 -7", "output": "5\n    3 1 4 1 5\n    LRDUL\n    RDULR\n    DULRD"}]