#include <bits/stdc++.h>
const char ch[4] = {'L', 'R', 'D', 'U'};
const int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
int tree[500][2], m, pre[300][300];
bool flg[300][300];
struct game {
  int vx, vy, sx, sy;
  game(const int _vx = 0, const int _vy = 0, const int _sx = 0,
       const int _sy = 0) {
    vx = _vx;
    vy = _vy;
    sx = _sx;
    sy = _sy;
  }
  bool tree(int x, int y) {
    if (x < 1 || x > 201 || y < 1 || y > 201) return false;
    return flg[x][y];
  }
  int move(int k) {
    int x = vx + dir[k][0], y = vy + dir[k][1], res = 1;
    if (tree(x, y)) return 0;
    vx = x;
    vy = y;
    x = sx + dir[k][0];
    y = sy + dir[k][1];
    if (!tree(x, y)) sx = x, sy = y, ++res;
    return res;
  }
  bool isend() { return sx == vx && sy == vy; }
  int spos() {
    int res = 0;
    if (sx >= 1) ++res;
    if (sx > 201) ++res;
    if (sy >= 1) res += 3;
    if (sy > 201) res += 3;
    return res;
  }
  int vpos() {
    int res = 0;
    if (vx >= 1) ++res;
    if (vx > 201) ++res;
    if (vy >= 1) res += 3;
    if (vy > 201) res += 3;
    return res;
  }
  int pos() {
    if (spos() != vpos()) return -1;
    return spos();
  }
} g;
int move(int k, int i = 1) {
  int res;
  while (i--) {
    if (res = g.move(k)) putchar(ch[k]);
  }
  return res;
}
void fixxl() {
  if (g.sx == g.vx) return;
  if (g.pos() == 5) move(3, 201);
  while (g.pos() != 6 && g.pos() != 3 && g.pos() != 0) move(0);
  int x = 0x3f3f3f3f, y;
  for (int i = 1; i <= m; ++i)
    if (tree[i][0] < x) x = tree[i][0], y = tree[i][1];
  if (y > g.sy)
    move(3, y - g.sy);
  else
    move(2, g.sy - y);
  move(1, x - g.vx - 1);
}
void fixxr() {
  if (g.sx == g.vx) return;
  if (g.pos() == 3) move(3, 201);
  while (g.pos() != 2 && g.pos() != 5 && g.pos() != 8) move(1);
  int x = -0x3f3f3f3f, y;
  for (int i = 1; i <= m; ++i)
    if (tree[i][0] > x) x = tree[i][0], y = tree[i][1];
  if (y > g.sy)
    move(3, y - g.sy);
  else
    move(2, g.sy - y);
  move(0, g.vx - x - 1);
}
void fixyd() {
  if (g.sy == g.vy) return;
  if (g.pos() == 7) move(0, 201);
  while (g.pos() > 2 || g.pos() == -1) move(2);
  int x, y = 0x3f3f3f3f;
  for (int i = 1; i <= m; ++i)
    if (tree[i][1] < y) x = tree[i][0], y = tree[i][1];
  if (x > g.sx)
    move(1, x - g.sx);
  else
    move(0, g.sx - x);
  move(3, y - g.vy - 1);
}
void fixyu() {
  if (g.sy == g.vy) return;
  if (g.pos() == 1) move(0, 201);
  while (g.pos() < 6) move(3);
  int x, y = -0x3f3f3f3f;
  for (int i = 1; i <= m; ++i)
    if (tree[i][1] > y) x = tree[i][0], y = tree[i][1];
  if (x > g.sx)
    move(1, x - g.sx);
  else
    move(0, g.sx - x);
  move(2, g.vy - y - 1);
}
void bfs() {
  memset(pre, -1, sizeof pre);
  pre[g.vx][g.vy] = -2;
  std::queue<game> q;
  for (q.push(g); !q.empty(); q.pop()) {
    game u = q.front();
    for (int k = 0; k < 4; ++k) {
      game v = u;
      if (!v.move(k) || v.vx < 0 || v.vx > 202 || v.vy < 0 || v.vy > 202 ||
          pre[v.vx][v.vy] != -1)
        continue;
      q.push(v);
      pre[v.vx][v.vy] = k;
      if (v.vx == g.sx && v.vy == g.sy) return;
    }
  }
}
void work() {
  static int st[1000000];
  static std::queue<int> q;
  if (!m) {
    puts("-1");
    return;
  }
  bfs();
  if (pre[g.sx][g.sy] == -1) {
    puts("-1");
    return;
  }
  for (int x = g.sx, y = g.sy; pre[x][y] != -2;) {
    st[++st[0]] = pre[x][y];
    x += dir[st[st[0]] ^ 1][0];
    y += dir[st[st[0]] ^ 1][1];
  }
  for (; st[0]; --st[0]) q.push(st[st[0]]);
  while (!g.isend() && (g.pos() == -1 || g.pos() == 4)) {
    int k = q.front();
    q.pop();
    if (move(k) == 2) q.push(k);
  }
  if (g.sx > g.vx)
    fixxl();
  else
    fixxr();
  if (g.sy > g.vy)
    fixyd();
  else
    fixyu();
  for (int i = 0; i < 4; ++i) move(i);
}
int main() {
  int vx, vy, sx, sy;
  scanf("%d%d%d%d%d", &vx, &vy, &sx, &sy, &m);
  vx += 101;
  vy += 101;
  sx += 101;
  sy += 101;
  g = game(vx, vy, sx, sy);
  for (int i = 1; i <= m; ++i) {
    scanf("%d%d", &tree[i][0], &tree[i][1]);
    tree[i][0] += 101;
    tree[i][1] += 101;
    flg[tree[i][0]][tree[i][1]] = true;
  }
  work();
}
