#include<bits/stdc++.h>
using namespace std;
inline void rd(int &x){
  int k, m=0;
  x=0;
  for(;;){
    k = getchar_unlocked();
    if(k=='-'){
      m=1;
      break;
    }
    if('0'<=k&&k<='9'){
      x=k-'0';
      break;
    }
  }
  for(;;){
    k = getchar_unlocked();
    if(k<'0'||k>'9'){
      break;
    }
    x=x*10+k-'0';
  }
  if(m){
    x=-x;
  }
}
inline void wt_L(char a){
  putchar_unlocked(a);
}
inline void wt_L(int x){
  char f[10];
  int m=0, s=0;
  if(x<0){
    m=1;
    x=-x;
  }
  while(x){
    f[s++]=x%10;
    x/=10;
  }
  if(!s){
    f[s++]=0;
  }
  if(m){
    putchar_unlocked('-');
  }
  while(s--){
    putchar_unlocked(f[s]+'0');
  }
}
inline void wt_L(const char c[]){
  int i=0;
  for(i=0;c[i]!='\0';i++){
    putchar_unlocked(c[i]);
  }
}
template<class S, class T> inline S moddw_L(S a, const T b){
  a %= b;
  if(a < 0){
    a += b;
  }
  return a;
}
int N;
int X[1000];
int Y[1000];
int M;
int D[40];
char res[42];
int ress;
int main(){
  int i, j, k, md;
  rd(N);
  {
    int Lj4PdHRW;
    for(Lj4PdHRW=0;Lj4PdHRW<N;Lj4PdHRW++){
      rd(X[Lj4PdHRW]);
      rd(Y[Lj4PdHRW]);
    }
  }
  md =moddw_L((X[0] + Y[0]),2);
  for(i=1;i<N;i++){
    if(moddw_L((X[i]+Y[i]),2)!= md ){
      break;
    }
  }
  if(i<N){
    wt_L(-1);
    wt_L('\n');
    return 0;
  }
  if(md==0){
    for(i=0;i<N;i++){
      X[i]++;
    }
  }
  if(md==0){
    D[M++] = 1;
  }
  for(i=0;i<31;i++){
    D[M++] = (1<<i);
  }
  wt_L(M);
  wt_L('\n');
  {
    int KL2GvlyY;
    if(M==0){
      putchar_unlocked('\n');
    }
    else{
      for(KL2GvlyY=0;KL2GvlyY<M-1;KL2GvlyY++){
        wt_L(D[KL2GvlyY]);
        wt_L(' ');
      }
      wt_L(D[KL2GvlyY]);
      wt_L('\n');
    }
  }
  for(k=0;k<N;k++){
    ress = 0;
    if(md==0){
      res[ress++] = 'L';
    }
    for(i=0;i<31;i++){
      j = 1;
      if(i==30){
        j = 0;
      }
      if(X[k]%2){
        if(moddw_L(((X[k]+1)/2 + Y[k]/2),2)== j ){
          res[ress++] = 'L';
          X[k]++;
        }
        else{
          res[ress++] = 'R';
          X[k]--;
        }
      }
      else{
        if(moddw_L((X[k]/2 + (Y[k]+1)/2),2)== j ){
          res[ress++] = 'D';
          Y[k]++;
        }
        else{
          res[ress++] = 'U';
          Y[k]--;
        }
      }
      X[k] /= 2;
      Y[k] /= 2;
    }
    wt_L(res);
    wt_L('\n');
  }
  return 0;
}
// cLay varsion 20190721-1

// --- original code ---
// int N, X[1000], Y[1000];
// 
// int M, D[40];
// char res[42]; int ress;
// 
// {
//   int i, j, k, md;
//   
//   rd(N,(X,Y)(N));
// 
//   md = (X[0] + Y[0]) %% 2;
//   rep(i,1,N) if( (X[i]+Y[i])%%2 != md ) break;
//   if(i<N){
//     wt(-1);
//     return 0;
//   }
// 
//   if(md==0) rep(i,N) X[i]++;
//   if(md==0) D[M++] = 1;
//   rep(i,31) D[M++] = (1<<i);
// 
//   wt(M);
//   wt(D(M));
// 
//   rep(k,N){
//     ress = 0;
//     if(md==0) res[ress++] = 'L';
// 
//     rep(i,31){
//       j = 1;
//       if(i==30) j = 0;
//       if(X[k]%2){
//         if( ((X[k]+1)/2 + Y[k]/2) %% 2 == j ){
//           res[ress++] = 'L';
//           X[k]++;
//         } else {
//           res[ress++] = 'R';
//           X[k]--;
//         }
//       } else {
//         if( (X[k]/2 + (Y[k]+1)/2) %% 2 == j ){
//           res[ress++] = 'D';
//           Y[k]++;
//         } else {
//           res[ress++] = 'U';
//           Y[k]--;
//         }
//       }
//       X[k] /= 2;
//       Y[k] /= 2;
//     }
// 
//     wt(res);
//   }
// 
// }


Measured memory_bytes: 256