func_code_string: #include <bits/stdc++.h>   using namespace std;   #pragma comment(linker,  /STACK:100000000 )   int matrix[900][900];   int tmp[900][900];   int dx[4] = {1, 0, -1, 0};   int dy[4] = {0, 1, 0, -1};   vector<pair<int, int> > all;   void go(int x, int y) {     queue<pair<int, int> > q;     tmp[x][y] = 1;     q.push(make_pair(x, y));     all.push_back(make_pair(x, y));     while (!q.empty()) {       x = q.front().first;       y = q.front().second;       q.pop();       for (int i = 0; i < 4; i++) {         if (x + dx[i] >= 0 && x + dx[i] <= 799 && y + dy[i] >= 0 &&             y + dy[i] <= 799) {           if (matrix[x + dx[i]][y + dy[i]] != 255 &&               tmp[x + dx[i]][y + dy[i]] == 0) {             tmp[x + dx[i]][y + dy[i]] = 1;             q.push(make_pair(x + dx[i], y + dy[i]));             all.push_back(make_pair(x + dx[i], y + dy[i]));           }         }       }     }   }   vector<int> path;   int cnt = 0;   void bfs(int x1, int y1, int x2, int y2) {     for (int i = 0, maxi = (int)(all).size(); i < maxi; i++) {       int x = all[i].first;       int y = all[i].second;       tmp[x][y] = 0;     }     all.clear();     path.clear();     cnt = 0;     queue<pair<int, int> > q;     q.push(make_pair(x1, y1));     tmp[x1][y1] = 111;     all.push_back(make_pair(x1, y1));     while (!q.empty()) {       for (int i = 0, maxi = (int)(q).size(); i < maxi; i++) {         int x = q.front().first;         int y = q.front().second;         q.pop();         if (x == x2 && y == y2) {           cnt = 0;           while (x != x1 || y != y1) {             int j = tmp[x][y] - 1;             cnt++;             path.push_back(j);             x = x - dx[j];             y = y - dy[j];           }           return;         }         for (int j = 0; j < 4; j++) {           if (x + dx[j] >= 0 && x + dx[j] <= 799 && y + dy[j] >= 0 &&               y + dy[j] <= 799) {             if (matrix[x + dx[j]][y + dy[j]] != 255 &&                 tmp[x + dx[j]][y + dy[j]] == 0) {               tmp[x + dx[j]][y + dy[j]] = j + 1;               q.push(make_pair(x + dx[j], y + dy[j]));               all.push_back(make_pair(x + dx[j], y + dy[j]));             }           }         }       }     }   }   string ans =   ;   int main() {     int x1, y1, x2, y2;     scanf( %d %d %d %d , &x1, &y1, &x2, &y2);     x1 += 400;     y1 += 400;     x2 += 400;     y2 += 400;     int m;     scanf( %d , &m);     int max_x = 0, min_x = 800, max_y = 0, min_y = 800;     for (int i = 0; i < m; i++) {       int x, y;       scanf( %d %d , &x, &y);       x += 400;       y += 400;       min_x = min(min_x, x);       max_x = max(max_x, x);       min_y = min(min_y, y);       max_y = max(max_y, y);       matrix[x][y] = 255;     }     go(x1, y1);     if (m == 0 || tmp[x1][y1] != tmp[x2][y2]) {       printf( -1 );       return 0;     }     while (true) {       bfs(x1, y1, x2, y2);       reverse(path.begin(), path.end());       for (int i = 0; i < cnt; i++) {         if (path[i] == 0)           ans +=  R ;         else if (path[i] == 1)           ans +=  U ;         else if (path[i] == 2)           ans +=  L ;         else if (path[i] == 3)           ans +=  D ;         int j = path[i];         x1 += dx[j];         y1 += dy[j];         if (matrix[x2 + dx[j]][y2 + dy[j]] != 255) {           x2 += dx[j];           y2 += dy[j];           path.push_back(j);           cnt++;         }         if (min(y1, y2) > max_y || max(y1, y2) < min_y || min(x1, x2) > max_x ||             max(x1, x2) < min_x || x1 == x2 && y1 == y2)           break;       }       if (x1 == x2 && y1 == y2) {         cout << ans;         return 0;       }       bool flag = false;       if (min(y1, y2) > max_y) {         if (max(x1, x2) >= min_x) {           int diff = max(x1, x2) - min_x + 1;           x1 -= diff;           x2 -= diff;           for (int i = 0; i < diff; i++) ans +=  L ;         }         if (max(y1, y2) >= min_y) {           int diff = max(y1, y2) - min_y + 1;           y1 -= diff;           y2 -= diff;           for (int i = 0; i < diff; i++) ans +=  D ;         }         flag = true;       } else if (max(y1, y2) < min_y) {         if (max(x1, x2) >= min_x) {           int diff = max(x1, x2) - min_x + 1;           x1 -= diff;           x2 -= diff;           for (int i = 0; i < diff; i++) ans +=  L ;         }         if (max(y1, y2) >= min_y) {           int diff = max(y1, y2) - min_y + 1;           y1 -= diff;           y2 -= diff;           for (int i = 0; i < diff; i++) ans +=  D ;         }         flag = true;       } else if (min(x1, x2) > max_x) {         if (max(y1, y2) >= min_y) {           int diff = max(y1, y2) - min_y + 1;           y1 -= diff;           y2 -= diff;           for (int i = 0; i < diff; i++) ans +=  D ;         }         if (max(x1, x2) >= min_x) {           int diff = max(x1, x2) - min_x + 1;           x1 -= diff;           x2 -= diff;           for (int i = 0; i < diff; i++) ans +=  L ;         }         flag = true;       } else if (max(x1, x2) < min_x) {         if (max(y1, y2) >= min_y) {           int diff = max(y1, y2) - min_y + 1;           y1 -= diff;           y2 -= diff;           for (int i = 0; i < diff; i++) ans +=  D ;         }         if (max(x1, x2) >= min_x) {           int diff = max(x1, x2) - min_x + 1;           x1 -= diff;           x2 -= diff;           for (int i = 0; i < diff; i++) ans +=  L ;         }         flag = true;       }       if (flag) {         if (y2 > y1) {           int y = min_y;           int x;           for (int i = 290; i < 510; i++) {             if (matrix[i][y] == 255) {               x = i;               break;             }           }           if (x2 < x) {             int diff = x - x2;             x1 += diff;             x2 += diff;             for (int i = 0; i < diff; i++) ans +=  R ;           }           if (y2 != y1) {             int diff = y - y1 - 1;             y2 = y - 1;             y1 = y2;             for (int i = 0; i < diff; i++) ans +=  U ;           }         } else {           if (min(y1, y2) <= max_y) {             int diff = max_y - min(y1, y2) + 1;             y1 += diff;             y2 += diff;             for (int i = 0; i < diff; i++) ans +=  U ;           }           int y = max_y;           int x;           for (int i = 290; i < 510; i++) {             if (matrix[i][y] == 255) {               x = i;               break;             }           }           if (x2 < x) {             int diff = x - x2;             x1 += diff;             x2 += diff;             for (int i = 0; i < diff; i++) ans +=  R ;           }           if (y2 != y1) {             int diff = y1 - y - 1;             y1 -= diff;             y2 = y + 1;             for (int i = 0; i < diff; i++) ans +=  D ;           }         }         if (x2 > x1) {           if (max(x1, x2) >= min_x) {             int diff = max(x1, x2) - min_x + 1;             x2 -= diff;             x1 -= diff;             for (int i = 0; i < diff; i++) ans +=  L ;           }           if (max(y1, y2) >= min_y) {             int diff = max(y1, y2) - min_y + 1;             y2 -= diff;             y1 -= diff;             for (int i = 0; i < diff; i++) ans +=  D ;           }           int x = min_x;           int y;           for (int i = 290; i < 510; i++) {             if (matrix[x][i] == 255) {               y = i;               break;             }           }           if (y1 < y) {             int diff = y - y1;             y1 += diff;             y2 += diff;             for (int i = 0; i < diff; i++) ans +=  U ;           }           if (x2 != x1) {             int diff = x - x1 - 1;             x1 += diff;             x2 = x - 1;             for (int i = 0; i < diff; i++) ans +=  R ;           }           cout << ans;           return 0;         } else {           if (min(x1, x2) <= max_x) {             int diff = max_x - min(x1, x2) + 1;             x1 += diff;             x2 += diff;             for (int i = 0; i < diff; i++) ans +=  R ;           }           if (max(y1, y2) >= min_y) {             int diff = max(y1, y2) - min_y + 1;             y2 -= diff;             y1 -= diff;             for (int i = 0; i < diff; i++) ans +=  D ;           }           int x = max_x;           int y;           for (int i = 290; i < 510; i++) {             if (matrix[x][i] == 255) {               y = i;               break;             }           }           if (y1 < y) {             int diff = y - y1;             y1 += diff;             y2 += diff;             for (int i = 0; i < diff; i++) ans +=  U ;           }           while (x2 != x1) {             int diff = x1 - x - 1;             x1 -= diff;             x2 = x + 1;             for (int i = 0; i < diff; i++) ans +=  L ;           }           cout << ans;           return 0;         }       }     }     return 0;   }   