#include <bits/stdc++.h>
using namespace std;
struct point{int x, y;};
int main() {
  vector<long long> arm;
  for (int i = 30; i >= 0; i--) {
    arm.push_back(1 << i);
  }
  int n;
  cin >> n;
  vector<point> p;
  int judge;
  for (int i = 0; i < n; i++) {
    point pp;
    cin >> pp.x >> pp.y;
    if (i == 0) {
      if ((pp.x + pp.y) & 1) judge = 1;
      else judge = 0;
    } else {
      if (((pp.x + pp.y) & 1) != judge) {
        puts("-1");
        return 0;
      }
    }
    p.push_back(pp);
  }
  if (!judge) arm.push_back(1);
  cout << arm.size() << endl;
  for (int i = 0; i < arm.size(); i++) {
    cout << arm[i];
    if (i != arm.size() - 1) cout << " ";
  }
  cout << endl;
  for (int i = 0; i < p.size(); i++) {
    int xx = p[i].x, yy = p[i].y;
    int px = 0, py = 0;
    for (int j = 0; j < arm.size(); j++) {
      int xxx = xx - px, yyy = yy - py;
      //R
      if (xxx >= 0 && abs(yyy) <= xxx) {
        cout << 'R';
        px += arm[j];
      }
      //L
      else if (xxx <= 0 && abs(yyy) <= abs(xxx)) {
        cout << 'L';
        px -= arm[j];
      }
      //U
      else if (yyy > 0) {
        cout << 'U';
        py += arm[j];
      }
      //D
      else {
        cout << 'D';
        py -= arm[j];
      }
    }
    cout << endl;
  }
  return 0;
}
