#include <bits/stdc++.h>
using namespace std;
const int oo = 0x3f3f3f3f;
const int max0 = 1e7;
const int maxm = 400;
const int maxabs = 101;
const int max1 = 1e3;
bool a[(maxabs << 1) + 5][(maxabs << 1) + 5] = {{0}};
int pre[(max1 << 1) + 5][(max1 << 1) + 5] = {{0}};
int n, ax, ay, bx, by;
int walk[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
char cr[4] = {'U', 'D', 'R', 'L'};
bool go(const int &first) {
  putchar(cr[first]);
  ax += walk[first][0], ay += walk[first][1];
  int ux = bx + walk[first][0], uy = by + walk[first][1];
  if (ux >= 0 && ux <= maxabs << 1 && uy >= 0 && uy <= maxabs << 1 && a[ux][uy])
    return 0;
  bx = ux, by = uy;
  return 1;
}
void bfs(const int &ax, const int &ay) {
  static pair<int, int> q[max0 + 5];
  memset(pre, -1, sizeof pre);
  pre[ax + max1][ay + max1] = 4;
  int tot = 0;
  q[tot++] = make_pair(ax, ay);
  for (int i = 0; i != tot; ++i) {
    const pair<int, int> &first = q[i];
    for (int j = (0), _end_ = (4); j != _end_; ++j) {
      int ux = first.first + walk[j][0], uy = first.second + walk[j][1];
      if (ux < -max1 || uy < -max1 || ux >= max1 << 1 || uy >= max1 << 1 ||
          pre[ux + max1][uy + max1] != -1)
        continue;
      if (ux >= 0 && ux <= maxabs << 1 && uy >= 0 && uy <= maxabs << 1 &&
          a[ux][uy])
        continue;
      pre[ux + max1][uy + max1] = j;
      q[tot++] = make_pair(ux, uy);
    }
  }
}
void trace_path(const int &first, const int &second, const int &bx,
                const int &by, const bool &flag = 0) {
  static int qq[max0 + 5];
  int ux = first, uy = second;
  int tot = 0;
  while (ux != bx || uy != by) {
    int tmp = pre[ux + max1][uy + max1];
    qq[tot++] = tmp;
    ux -= walk[tmp][0], uy -= walk[tmp][1];
  }
  reverse(qq, qq + tot);
  for (int i = 0; i != tot; ++i) {
    if (go(qq[i]) && flag) qq[tot++] = qq[i];
    if (ax == ::bx && ay == ::by) break;
  }
}
void solve_inf() {
  memset(pre, -1, sizeof pre);
  if (ay > by) {
    swap(cr[0], cr[1]);
    for (int i = (0), _end_ = (maxabs); i != _end_; ++i)
      for (int j = (0), _end_ = (maxabs << 1); j <= _end_; ++j)
        swap(a[j][i], a[j][(maxabs << 1) - i]);
    ay = (maxabs << 1) - ay, by = (maxabs << 1) - by;
  }
  if (ax > bx) {
    swap(cr[2], cr[3]);
    for (int i = (0), _end_ = (maxabs); i != _end_; ++i)
      for (int j = (0), _end_ = (maxabs << 1); j <= _end_; ++j)
        swap(a[i][j], a[(maxabs << 1) - i][j]);
    ax = (maxabs << 1) - ax, bx = (maxabs << 1) - bx;
  }
  bfs(ax, ay), trace_path(0, 0, ax, ay);
  for (int i = (0), _end_ = (maxabs * 3); i != _end_; ++i) go(1);
  bfs(bx, by), trace_path(0, 0, bx, by);
  pair<int, int> yyt = make_pair(oo, oo);
  for (int i = (0), _end_ = (maxabs << 1); i <= _end_; ++i)
    for (int j = (0), _end_ = (maxabs << 1); j <= _end_; ++j)
      if (a[i][j]) yyt = min(yyt, make_pair(j, i));
  swap(yyt.first, yyt.second);
  while (bx != yyt.first) go(2);
  while (ay != by || by != yyt.second - 1) go(0);
  go(3), go(0);
  while (ax != bx) go(2);
  exit(0);
}
int main() {
  scanf("%d%d%d%d%d", &ax, &ay, &bx, &by, &n), ax += maxabs, ay += maxabs,
      bx += maxabs, by += maxabs;
  if (!n) printf("-1\n"), exit(0);
  for (int i = (0), _end_ = (n); i != _end_; ++i) {
    static int first, second;
    scanf("%d%d", &first, &second);
    a[first + maxabs][second + maxabs] = 1;
  }
  bfs(ax, ay);
  if (pre[bx + max1][by + max1] == -1) printf("-1\n"), exit(0);
  if (pre[max1][max1] != -1) solve_inf();
  trace_path(bx, by, ax, ay, 1);
  return 0;
}
