#include <bits/stdc++.h>
using namespace std;
int read() {
  int sum = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9')
    if (ch == '-')
      f = -1, ch = getchar();
    else
      ch = getchar();
  while (ch <= '9' && ch >= '0') sum = sum * 10 + ch - '0', ch = getchar();
  return sum * f;
}
int sx, sy, tx, ty, n;
int xx[] = {1, 0, 0, -1}, yy[] = {0, 1, -1, 0};
char c[] = {'R', 'U', 'D', 'L'};
struct data {
  int x, y;
} P[4], L, R, U, D, q[100005];
int dir[100005], from[100005];
vector<int> p;
bool vis[305][305], mp[305][305];
bool BFS() {
  int head = 0, tail = 1;
  q[0] = (data){sx, sy};
  vis[sx][sy] = 1;
  while (head != tail) {
    int x = q[head].x, y = q[head].y;
    for (int k = 0; k < 4; ++k) {
      int nx = x + xx[k], ny = y + yy[k];
      if ((0 <= nx && nx <= 300 && 0 <= ny && ny <= 300) && !vis[nx][ny]) {
        q[tail] = (data){nx, ny};
        vis[nx][ny] = 1;
        dir[tail] = k;
        from[tail] = head;
        if (nx == tx && ny == ty) {
          p.clear();
          for (; tail; tail = from[tail]) p.push_back(dir[tail]);
          reverse(p.begin(), p.end());
          return 1;
        }
        tail++;
      }
    }
    head++;
  }
  return 0;
}
bool move(int k) {
  sx += xx[k];
  sy += yy[k];
  tx += xx[k];
  ty += yy[k];
  putchar(c[k]);
  if ((0 <= tx && tx <= 300 && 0 <= ty && ty <= 300) && mp[tx][ty]) {
    tx -= xx[k];
    ty -= yy[k];
    return 0;
  }
  return 1;
}
void pre() {
  while ((0 <= sx && sx <= 300) || (0 <= tx && tx <= 300)) move(0);
  while ((0 <= sy && sy <= 300) || (0 <= ty && ty <= 300)) move(1);
}
void ud(int d) {
  pre();
  while ((d == 2 && 0 <= ty) || (d == 1 && ty <= 300)) move(d);
  while (tx != P[d].x) move(tx < P[d].x ? 0 : 3);
  while (sy != ty) move(3 - d);
}
void lr(int d) {
  pre();
  while ((d == 3 && 0 <= tx) || (d == 0 && tx <= 300)) move(d);
  while (ty != P[d].y) move(ty < P[d].y ? 1 : 2);
  while (sx != tx) move(3 - d);
}
void solve() {
  if (!n || !BFS()) {
    puts("-1");
    return;
  }
  for (int i = 0; i < p.size(); ++i) {
    if (move(p[i])) p.push_back(p[i]);
    if (sx == tx && sy == ty) return;
    if (!(0 <= sx && sx <= 300 && 0 <= sy && sy <= 300)) break;
  }
  if (sy < ty) ud(2);
  if (sy > ty) ud(1);
  if (sx < tx) lr(3);
  if (sx > tx) lr(0);
}
int main() {
  sx = read();
  sy = read();
  tx = read();
  ty = read();
  sx += 150;
  sy += 150;
  tx += 150;
  ty += 150;
  L.x = D.y = 1e9;
  R.x = U.y = -1e9;
  n = read();
  for (int x, y, i = 1; i <= n; ++i) {
    x = read() + 150;
    y = read() + 150;
    if (x < L.x) L = (data){x, y};
    if (x > R.x) R = (data){x, y};
    if (y > U.y) U = (data){x, y};
    if (y < D.y) D = (data){x, y};
    mp[x][y] = vis[x][y] = 1;
  }
  P[0] = R;
  P[1] = U;
  P[2] = D;
  P[3] = L;
  solve();
  return 0;
}
