#include <bits/stdc++.h>
using namespace std;
namespace IO {
const int sz = 1 << 15;
char inbuf[sz], outbuf[sz];
char *pinbuf = inbuf + sz;
char *poutbuf = outbuf;
inline char _getchar() {
  if (pinbuf == inbuf + sz) fread(inbuf, 1, sz, stdin), pinbuf = inbuf;
  return *(pinbuf++);
}
inline void _putchar(char x) {
  if (poutbuf == outbuf + sz) fwrite(outbuf, 1, sz, stdout), poutbuf = outbuf;
  *(poutbuf++) = x;
}
inline void flush() {
  if (poutbuf != outbuf)
    fwrite(outbuf, 1, poutbuf - outbuf, stdout), poutbuf = outbuf;
}
}  // namespace IO
inline int read() {
  int v = 0, f = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    v = v * 10 + c - '0';
    c = getchar();
  }
  return v * f;
}
const int Maxn = 1005;
const int B = 101;
const int dx[] = {0, 0, 1, -1};
const int dy[] = {1, -1, 0, 0};
const char ch[] = "UDRL";
int vx, vy, sx, sy, m;
int occ[Maxn][Maxn];
int par[Maxn * Maxn];
int findset(int x) { return par[x] = (par[x] == x) ? x : findset(par[x]); }
void Union(int x, int y) {
  x = findset(x);
  y = findset(y);
  par[x] = y;
}
int dist[Maxn][Maxn], prvx[Maxn][Maxn], prvy[Maxn][Maxn];
char op[Maxn][Maxn];
int qx[Maxn * Maxn], qy[Maxn * Maxn], eq, sq;
void bfs(int x, int y, int D) {
  for (int i = 0; i <= D; i++) {
    for (int j = 0; j <= D; j++) {
      dist[i][j] = -1;
    }
  }
  dist[x][y] = 0;
  sq = eq = 0;
  qx[eq] = x;
  qy[eq++] = y;
  while (sq < eq) {
    int X = qx[sq], Y = qy[sq++];
    for (int i = 0; i < 4; i++) {
      int nx = X + dx[i], ny = Y + dy[i];
      if (nx >= 0 && ny >= 0 && nx <= D && ny <= D && !occ[nx][ny]) {
        if (dist[nx][ny] == -1) {
          dist[nx][ny] = dist[X][Y] + 1;
          prvx[nx][ny] = X;
          prvy[nx][ny] = Y;
          op[nx][ny] = ch[i];
          qx[eq] = nx;
          qy[eq++] = ny;
        }
      }
    }
  }
}
bool BL(int x, int y) {
  return x >= 0 && y >= 0 && x <= 205 && y <= 205 && occ[x][y];
}
void Move(char t) {
  if (t == 'L') {
    sx--;
    vx--;
    if (BL(vx, vy)) vx++;
  } else if (t == 'R') {
    sx++;
    vx++;
    if (BL(vx, vy)) vx--;
  } else if (t == 'U') {
    sy++;
    vy++;
    if (BL(vx, vy)) vy--;
  } else {
    sy--;
    vy--;
    if (BL(vx, vy)) vy++;
  }
  assert(!BL(sx, sy));
}
int Bx[Maxn], By[Maxn];
int main() {
  vx = read();
  vy = read();
  sx = read();
  sy = read();
  swap(vx, sx);
  swap(vy, sy);
  vx += B;
  vy += B;
  sx += B;
  sy += B;
  m = read();
  if (m == 0) {
    puts("-1");
    return 0;
  }
  for (int i = 0; i < m; i++) {
    int x, y;
    x = read();
    y = read();
    x += B;
    y += B;
    Bx[i] = x;
    By[i] = y;
    occ[x][y] = 1;
  }
  for (int i = 1; i <= 500; i++)
    for (int j = 1; j <= 500; j++) par[i * Maxn + j] = i * Maxn + j;
  for (int i = 1; i <= 500; i++) {
    for (int j = 1; j <= 500; j++) {
      if (!occ[i][j]) {
        for (int k = 0; k < 4; k++) {
          int ni = i + dx[k], nj = j + dy[k];
          if (!occ[ni][nj]) {
            Union(i * Maxn + j, ni * Maxn + nj);
          }
        }
      }
    }
  }
  if (findset(vx * Maxn + vy) != findset(sx * Maxn + sy)) {
    printf("-1\n");
    return 0;
  }
  string ans;
  if (findset(vx * Maxn + vy) == findset(500 * Maxn + 500)) {
    bfs(sx, sy, 1000);
    string tmp;
    int tx = 500, ty = 500;
    while (tx != sx || ty != sy) {
      tmp += op[tx][ty];
      int _ = prvx[tx][ty], __ = prvy[tx][ty];
      tx = _;
      ty = __;
    }
    reverse(tmp.begin(), tmp.end());
    ans += tmp;
    for (int i = 0; i < ans.size(); i++) Move(ans[i]);
    bfs(vx, vy, 1000);
    tmp = "";
    tx = 500, ty = 500;
    while (tx != vx || ty != vy) {
      tmp += op[tx][ty];
      int _ = prvx[tx][ty], __ = prvy[tx][ty];
      tx = _;
      ty = __;
    }
    reverse(tmp.begin(), tmp.end());
    for (int i = 0; i < tmp.size(); i++) Move(tmp[i]);
    ans += tmp;
    if (sx > vx) {
      int Mx = -1e9, My;
      for (int i = 0; i < m; i++) {
        if (Bx[i] > Mx) {
          Mx = Bx[i];
          My = By[i];
        }
      }
      while (vy > My) {
        Move('D');
        ans += 'D';
      }
      while (vy < My) {
        Move('U');
        ans += 'U';
      }
      while (vx != sx) {
        Move('L');
        ans += 'L';
      }
      for (int i = 0; i < 500; i++) {
        Move('U');
        Move('R');
        ans += "UR";
      }
    } else if (sx < vx) {
      int Mx = 1e9, My;
      for (int i = 0; i < m; i++) {
        if (Bx[i] < Mx) {
          Mx = Bx[i];
          My = By[i];
        }
      }
      while (vx >= 0) {
        Move('L');
        ans += 'L';
      }
      while (vy > My) {
        Move('D');
        ans += 'D';
      }
      while (vy < My) {
        Move('U');
        ans += 'U';
      }
      while (vx != sx) {
        Move('R');
        ans += 'R';
      }
      for (int i = 0; i < 1000; i++) {
        Move('U');
        ans += "U";
      }
      for (int i = 0; i < 1000; i++) {
        Move('R');
        ans += "R";
      }
    }
    assert(sx == vx);
    if (sy > vy) {
      int Mx, My = -1e9;
      for (int i = 0; i < m; i++) {
        if (By[i] > My) {
          Mx = Bx[i];
          My = By[i];
        }
      }
      while (vx > Mx) {
        Move('L');
        ans += 'L';
      }
      while (vx < Mx) {
        Move('R');
        ans += 'R';
      }
      while (vy != sy) {
        Move('D');
        ans += 'D';
      }
    } else {
      int Mx, My = 1e9;
      for (int i = 0; i < m; i++) {
        if (By[i] < My) {
          Mx = Bx[i];
          My = By[i];
        }
      }
      while (vy >= 0) {
        Move('D');
        ans += 'D';
      }
      while (vx > Mx) {
        Move('L');
        ans += 'L';
      }
      while (vx < Mx) {
        Move('R');
        ans += 'R';
      }
      while (vy != sy) {
        Move('U');
        ans += 'U';
      }
    }
    assert(sx == vx && sy == vy);
    printf("%s\n", ans.c_str());
    return 0;
  }
  while (vx != sx || vy != sy) {
    bfs(sx, sy, 200);
    int tx = vx, ty = vy;
    string tmp;
    while (tx != sx || ty != sy) {
      tmp += op[tx][ty];
      int _ = prvx[tx][ty], __ = prvy[tx][ty];
      tx = _;
      ty = __;
    }
    reverse(tmp.begin(), tmp.end());
    ans += tmp;
    for (int i = 0; i < tmp.size(); i++) Move(tmp[i]);
  }
  printf("%s\n", ans.c_str());
  return 0;
}
