#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<long long> VL;
typedef vector<vector<long long>> VVL;
typedef pair<int,int> P;
typedef tuple<int,int,int> tpl;

#define ALL(a)  (a).begin(),(a).end()
#define SORT(c) sort((c).begin(),(c).end())
#define REVERSE(c) reverse((c).begin(),(c).end())
#define EXIST(m,v) (m).find((v)) != (m).end()
#define LB(a,x) lower_bound((a).begin(), (a).end(), x) - (a).begin()
#define UB(a,x) upper_bound((a).begin(), (a).end(), x) - (a).begin()

#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)  FOR(i,0,n)
#define RFOR(i,a,b) for(int i=(a)-1;i>=(b);--i)
#define RREP(i,n) RFOR(i,n,0)

#define en "\n"

constexpr double EPS = 1e-9;
constexpr double PI  = 3.1415926535897932;
constexpr int INF = 2147483647;
constexpr long long LINF = 1LL<<60;
constexpr long long MOD = 1000000007; // 998244353;

template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }

int quadrant(int u, int v){
    if(u>=0) return v>=0 ? 1 : 4;
    else return v>=0 ? 2 : 3;
}

char inv(char c){
    if(c=='L') return 'U';
    else if(c=='R') return 'D';
    else if(c=='D') return 'R';
    else return 'U';
}

void reconst(int quad, string& d){
    int N = d.size();
    if(quad == 1) return;
    else if(quad == 2){
        REP(i,N)
            if(d[i]=='L') d[i] = 'U';
            else if(d[i]=='R') d[i] = 'D';
            else if(d[i]=='D') d[i] = 'R';
            else d[i] = 'L';
    }
    else if(quad == 3){
        REP(i,N)
            if(d[i]=='L') d[i] = 'R';
            else if(d[i]=='R') d[i] = 'L';
            else if(d[i]=='D') d[i] = 'U';
            else d[i] = 'D';
    }
    else{
        REP(i,N)
            if(d[i]=='L') d[i] = 'D';
            else if(d[i]=='R') d[i] = 'U';
            else if(d[i]=='D') d[i] = 'L';
            else d[i] = 'R';
    }
    return;
}


void Main(){
    int N; cin >> N;
    VI X(N),Y(N); REP(i,N) cin >> X[i] >> Y[i];
    int mod = 0; REP(i,N) mod += (abs(X[i])+abs(Y[i]))%2;

    if(0<mod && mod<N){
        cout << -1 << en;
        return;
    }

    bool even = mod == 0;

    int m = 31 + even; cout << m << en;
    VI d(m);
    REP(i,31){
        d[i] = 1<<i;
        cout << d[i] << " ";
    }
    if(even){
        d[31] = 1;
        cout << d[31];
    }
    cout << en;

    REP(i,N){
        ll u = X[i]+Y[i]-even, v = X[i]-Y[i]-even;
        int quad = quadrant(u,v);
        u = abs(u); v = abs(v);

        string w = "";
        ll S = (u+INF)/2, T = (v+INF)/2;
        REP(j,31){
            int bu = (S>>j) & 1, bv = (T>>j) & 1;
            if(bu && bv) w += 'R';
            else if(bu) w += 'U';
            else if(bv) w += 'D';
            else w += 'L';
        }

        reconst(quad, w);
        if(even) w += 'R';
        cout << w << en;
    }
    return;
}

int main(void){
    cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);cout<<fixed<<setprecision(15);
    int t=1; //cin>>t;
    REP(_,t) Main();
    return 0;
}