func_code_string: #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;   }   