#include <bits/stdc++.h>
using namespace std;
int vx, vy, sx, sy;
int mid = 110;
int que[41000][2], qs, qe;
int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
set<pair<int, int> > rock;
inline bool ins(int x, int y) {
  return x <= 110 && x >= -110 && y <= 110 && y >= -110;
}
set<pair<int, int> > vis;
vector<int> mv;
vector<int> ans;
inline bool dfs(int sx, int sy) {
  if (vis.count(make_pair(sx, sy))) return 0;
  vis.insert(make_pair(sx, sy));
  for (int i = 0; i < (4); i++) {
    int xx = sx + dx[i], yy = sy + dy[i];
    if (rock.count(make_pair(xx, yy))) continue;
    if (!ins(xx, yy)) return 1;
    if (dfs(xx, yy)) return 1;
  }
  return 0;
}
inline bool to(int sx, int sy, int tx, int ty) {
  if (sx == tx && sy == ty) return 1;
  if (vis.count(make_pair(sx, sy))) return 0;
  vis.insert(make_pair(sx, sy));
  for (int i = 0; i < (4); i++) {
    int xx = sx + dx[i], yy = sy + dy[i];
    if (rock.count(make_pair(xx, yy))) continue;
    if (!ins(xx, yy)) return 0;
    mv.push_back(i);
    if (to(xx, yy, tx, ty)) return 1;
    mv.pop_back();
  }
  return 0;
}
inline void move(int d) {
  ans.push_back(d);
  vx += dx[d];
  vy += dy[d];
  if (!rock.count(make_pair(sx + dx[d], sy + dy[d]))) {
    sx += dx[d];
    sy += dy[d];
  }
}
inline void move(int d, int c) {
  while (c--) move(d);
}
inline void move(const vector<int>& seq) {
  for (int i = 0; i < (((int)(seq).size())); i++) move(seq[i]);
}
int main() {
  scanf("%d%d", &vx, &vy);
  scanf("%d%d", &sx, &sy);
  int m;
  scanf("%d", &m);
  if (m == 0) {
    puts("-1");
    return 0;
  }
  while (m--) {
    int x, y;
    scanf("%d%d", &x, &y);
    rock.insert(make_pair(x, y));
  }
  vis.clear();
  if (dfs(vx, vy)) {
    vis.clear();
    if (!dfs(sx, sy)) {
      puts("-1");
      return 0;
    }
    vis.clear();
    mv.clear();
    to(vx, vy, 110, 110);
    move(mv);
    move(0, 1000);
    move(1, 1000);
    if (ins(sx, sy)) {
      vis.clear();
      mv.clear();
      to(sx, sy, 110, 110);
      move(mv);
    }
    move(0, 1000);
    move(1, 1000);
    pair<int, int> maxx = *rock.begin(), minx = *rock.begin(),
                   maxy = *rock.begin(), miny = *rock.begin();
    for (__typeof((rock).begin()) it = (rock).begin(); it != (rock).end();
         it++) {
      if (it->first > maxx.first) maxx = *it;
      if (it->first < minx.first) minx = *it;
      if (it->second > maxy.second) maxy = *it;
      if (it->second < miny.second) miny = *it;
    }
    if (vx > sx) {
      while (sy > maxx.second) move(3);
      while (vx > sx) move(2);
      move(0, 1000);
      move(1, 1000);
    } else {
      while (sx > -200) move(2);
      while (sy > minx.second) move(3);
      while (vx < sx) move(0);
      move(1, 2000);
      move(0, 2000);
    }
    if (vy > sy) {
      while (sx > maxy.first) move(2);
      while (vy > sy) move(3);
    } else {
      while (sy > -200) move(3);
      while (sx > miny.first) move(2);
      while (vy < sy) move(1);
    }
  } else {
    vis.clear();
    mv.clear();
    if (!to(vx, vy, sx, sy)) {
      puts("-1");
      return 0;
    }
    while (vx != sx || vy != sy) {
      vis.clear();
      mv.clear();
      to(vx, vy, sx, sy);
      move(mv);
    }
  }
  for (int i = 0; i < (((int)(ans).size())); i++) printf("%c", "RULD"[ans[i]]);
}
