#include <bits/stdc++.h>
using namespace std;
int Read() {
  char c;
  while (c = getchar(), (c != '-') && (c < '0' || c > '9'))
    ;
  bool neg = (c == '-');
  int ret = (neg ? 0 : c - 48);
  while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + c - 48;
  return neg ? -ret : ret;
}
const int MAXN = 1005, OUT = 700, dx[4] = {-1, 0, 1, 0}, dy[4] = {0, -1, 0, 1};
const char code[5] = "LDRU";
int Vx, Vy, Sx, Sy, M, n, ax, ay, cnt, seq[MAXN * MAXN], seq2[MAXN * MAXN];
bool bad[MAXN][MAXN];
int id, vis[MAXN][MAXN];
int pre[MAXN][MAXN];
pair<int, int> q[MAXN * MAXN], a[405];
char ans[1000005];
void init() {
  scanf("%d%d%d%d%d", &Vx, &Vy, &Sx, &Sy, &M);
  Vx += 300, Vy += 300, Sx += 300, Sy += 300;
  for (int i = 1; i <= M; i++) {
    int x = Read() + 300, y = Read() + 300;
    bad[x][y] = 1, a[i] = make_pair(x, y);
  }
}
void getSeq(int x, int y, int Vx, int Vy) {
  if (x != Vx || y != Vy) {
    getSeq(x - dx[pre[x][y]], y - dy[pre[x][y]], Vx, Vy);
    seq[++seq[0]] = pre[x][y];
  }
}
bool Connect(int Vx, int Vy, int Sx, int Sy) {
  int tail = 1;
  q[1] = make_pair(Vx, Vy), vis[Vx][Vy] = ++id, seq[0] = 0;
  for (int head = 1; head <= tail; head++) {
    int x = q[head].first, y = q[head].second;
    for (int k = 0; k <= 3; k++) {
      int nx = x + dx[k], ny = y + dy[k];
      if (nx && ny && nx < MAXN && ny < MAXN && !bad[nx][ny] &&
          vis[nx][ny] < id)
        q[++tail] = make_pair(nx, ny), vis[nx][ny] = id, pre[nx][ny] = k;
      if (nx == Sx && ny == Sy) {
        getSeq(nx, ny, Vx, Vy);
        return 1;
      }
    }
  }
  return 0;
}
void getAns(int x, int y) {
  if (x != Vx || y != Vy) {
    getAns(x - dx[pre[x][y]], y - dy[pre[x][y]]);
    ans[cnt++] = code[pre[x][y]];
  }
}
void Simulate(int &Sx, int &Sy, int *seq) {
  int tmp = seq[0];
  seq[0] = 0;
  for (int i = 1; i <= tmp; i++) {
    int nx = Sx + dx[seq[i]], ny = Sy + dy[seq[i]];
    if (nx > 0 && nx < MAXN && ny > 0 && ny < MAXN && bad[nx][ny])
      ;
    else
      Sx = nx, Sy = ny, seq[++seq[0]] = seq[i];
  }
}
void work() {
  if (!Connect(Vx, Vy, Sx, Sy) || (M == 0 && (Vx != Sx || Vy != Sy))) {
    puts("-1");
    return;
  }
  cnt = 0;
  if (Connect(Vx, Vy, OUT, OUT)) {
    for (int i = 1; i <= seq[0]; i++) ans[cnt++] = code[seq[i]];
    Vx = Vy = OUT, Simulate(Sx, Sy, seq);
    Connect(Sx, Sy, OUT, OUT);
    for (int i = 1; i <= seq[0]; i++) ans[cnt++] = code[seq[i]];
    Sx = Sy = OUT, Simulate(Vx, Vy, seq);
    if (Vx <= Sx && Vy <= Sy) {
      int mx = MAXN, my = MAXN;
      for (int i = 1; i <= M; i++)
        if (make_pair(a[i].second, a[i].first) < make_pair(my, mx))
          mx = a[i].first, my = a[i].second;
      for (int i = 1; i <= Sy - my + 1; i++) ans[cnt++] = 'D';
      for (int i = 1; i <= Sx - mx; i++) ans[cnt++] = 'L';
      for (int i = 1; i <= Sy - Vy; i++) ans[cnt++] = 'U';
      ans[cnt++] = 'L', ans[cnt++] = 'U';
      for (int i = 1; i <= Sx - Vx; i++) ans[cnt++] = 'R';
    } else if (Vx <= Sx && Vy > Sy) {
      int mx = MAXN, my = 0;
      for (int i = 1; i <= M; i++)
        if (make_pair(-a[i].second, a[i].first) < make_pair(-my, mx))
          mx = a[i].first, my = a[i].second;
      for (int i = 1; i <= Sx - mx; i++) ans[cnt++] = 'L';
      for (int i = 1; i <= Vy - my - 1; i++) ans[cnt++] = 'D';
      ans[cnt++] = 'L', ans[cnt++] = 'D';
      for (int i = 1; i <= Sx - Vx; i++) ans[cnt++] = 'R';
    } else if (Vx > Sx && Vy <= Sy) {
      int mx = 0, my = MAXN;
      for (int i = 1; i <= M; i++)
        if (make_pair(a[i].second, -a[i].first) < make_pair(my, -mx))
          mx = a[i].first, my = a[i].second;
      for (int i = 1; i <= Sy - my + 1; i++) ans[cnt++] = 'D';
      for (int i = 1; i <= Sx - mx; i++) ans[cnt++] = 'L';
      for (int i = 1; i <= Sy - Vy; i++) ans[cnt++] = 'U';
      ans[cnt++] = 'R', ans[cnt++] = 'U';
      for (int i = 1; i <= Vx - Sx; i++) ans[cnt++] = 'L';
    } else {
      int mx = 0, my = 0;
      for (int i = 1; i <= M; i++)
        if (make_pair(-a[i].second, -a[i].first) < make_pair(-my, -mx))
          mx = a[i].first, my = a[i].second;
      for (int i = 1; i <= Sx - mx; i++) ans[cnt++] = 'L';
      for (int i = 1; i <= Vy - my - 1; i++) ans[cnt++] = 'D';
      ans[cnt++] = 'R', ans[cnt++] = 'D';
      for (int i = 1; i <= Vx - Sx; i++) ans[cnt++] = 'L';
    }
  } else {
    Connect(Vx, Vy, Sx, Sy);
    for (; Vx != Sx || Vy != Sy;) {
      for (int i = 1; i <= seq[0]; i++) ans[cnt++] = code[seq[i]];
      Vx = Sx, Vy = Sy;
      Simulate(Sx, Sy, seq);
    }
  }
  puts(ans);
}
int main() {
  init();
  work();
  return 0;
}
