#include <iostream>
#include <iomanip>
#include <vector>
#include <map>
#include <queue>
#include <algorithm>

using namespace std;

int getIndex(int val) {
  return val >= 0 ? val : 2048 + abs(val);
}

string getDirection(int val) {
  string s = "";
  for (int i = 0; i < 13; i++) {
    switch(val % 4) {
      case 0:
        s = "R" + s;
        break;
      case 1:
        s = "L" + s;
        break;
      case 2:
        s = "U" + s;
        break;
      default:
        s = "D" + s;
        break;
    }
    val /= 4;
  }
  return s;
}

int main() {
  int N;
  cin >> N;

  vector<long long int> x(N), y(N);
  for (int i = 0; i < N; i++) {
    cin >> x[i] >> y[i];
  }

  int countMod = 0;
  for (int i = 0; i < N; i++) {
    countMod += (abs(x[i]) + abs(y[i])) % 2;
  }

  if (countMod > 0 && countMod < N) {
    cout << -1 << endl;
    return 0;
  }

  if (countMod > 0) {
    cout << 40 << endl;
    cout << 1 << " ";
  } else {
    cout << 39 << endl;
  }
  long long int mult = 1;
  for (int i = 0; i < 3; i++) {
    cout << mult << " " << mult << " ";
    for (int j = 0; j < 10; j++) {
      mult <<= 1;
      cout << mult;
      cout << " ";
    }
    cout << (mult << 1);
    if (i < 2) {
      cout << " ";
    }
  }
  cout << endl;

  vector<int> base;
  mult = 1;
  base.push_back(mult);
  base.push_back(mult);
  for (int j = 0; j < 11; j++) {
    mult <<= 1;
    base.push_back(mult);
  }

  vector<vector<int> > mapping(4097, vector<int>(4097, -1));
  mapping[1][0] = 0;
  mapping[2049][0] = 1;
  mapping[0][1] = 2;
  mapping[0][2049] = 3;

  int ct = 0;
  for (int i = 1; i < base.size(); i++) {
    vector<vector<int> > tmapping(4097, vector<int>(4097, -1));
    for (int j = -base[i]; j <= base[i]; j++) {
      int remaining = base[i] - abs(j);
      for (int k = -remaining; k <= remaining; k++) {
        int ind1 = getIndex(j);
        int ind2 = getIndex(k);
        int s = mapping[ind1][ind2];
        if (s > -1) {
          ct++;
          if (j + base[i] <= 2048) {
            tmapping[getIndex(j + base[i])][getIndex(k)] = s << 2;
          }
          if (j - base[i] >= -2048) {
            tmapping[getIndex(j - base[i])][getIndex(k)] = (s << 2) + 1;
          }
          if (k + base[i] <= 2048) {
            tmapping[getIndex(j)][getIndex(k + base[i])] = (s << 2) + 2;
          }
          if (k - base[i] >= -2048) {
            tmapping[getIndex(j)][getIndex(k - base[i])] = (s << 2) + 3;
          }
        }
      }
    }
    mapping = tmapping;
  }

  // cout << "pass" << endl;
  for (int i = 0; i < N; i++) {
    string s = "";
    long long int tx = x[i];
    long long int ty = y[i];

    if (countMod > 0) {
      if (tx > 0 && tx % 2 == 1) {
        s += 'R';
        tx--;
      } else if (tx < 0 && (-tx) % 2 == 1) {
        s += 'L';
        tx++;
      } else if (ty > 0) {
        s += 'U';
        ty--;
      } else {
        s += 'D';
        ty++;
      }
    }

    for (int j = 0; j < 3; j++) {
      int idx = abs(tx) % 1024;
      int idy = abs(ty) % 1024;
      
      if (tx < 0) {
        idx *= -1;
      }
      if (ty < 0) {
        idy *= -1;
      }

      tx /= 1024;
      ty /= 1024;

      if (abs(tx + ty) % 2 == 1) {
        if (abs(tx) % 2 == 1) {
          if (tx > 0) {
            tx--;
            idx += 1024;
          } else {
            tx++;
            idx -= 1024;
          }
        } else {
          if (ty > 0) {
            ty--;
            idy += 1024;
          } else {
            ty++;
            idy -= 1024;
          }
        }
      }
      // cout << getIndex(idx) << " " << getIndex(idy) << endl;
      s += getDirection(mapping[getIndex(idx)][getIndex(idy)]);
    }

    cout << s << endl;
  }

  return 0;
}


Measured memory_bytes: 131824