#include <stdio.h>

#include <algorithm>
#include <cmath>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>

using namespace std;

void __print(int x) { cerr << x; }
void __print(long x) { cerr << x; }
void __print(long long x) { cerr << x; }
void __print(unsigned x) { cerr << x; }
void __print(unsigned long x) { cerr << x; }
void __print(unsigned long long x) { cerr << x; }
void __print(float x) { cerr << x; }
void __print(double x) { cerr << x; }
void __print(long double x) { cerr << x; }
void __print(char x) { cerr << '\'' << x << '\''; }
void __print(const char *x) { cerr << '\"' << x << '\"'; }
void __print(const string &x) { cerr << '\"' << x << '\"'; }
void __print(bool x) { cerr << (x ? "true" : "false"); }

template <typename T, typename V>
void __print(const pair<T, V> &x) {
    cerr << '{';
    __print(x.first);
    cerr << ',';
    __print(x.second);
    cerr << '}';
}
template <typename T>
void __print(const T &x) {
    int f = 0;
    cerr << '{';
    for (auto &i : x) cerr << (f++ ? "," : ""), __print(i);
    cerr << "}";
}
void _print() { cerr << "]\n"; }
template <typename T, typename... V>
void _print(T t, V... v) {
    __print(t);
    if (sizeof...(v)) cerr << ", ";
    _print(v...);
}
#ifdef LOCAL
#define debug(x...)               \
    cerr << "[" << #x << "] = ["; \
    _print(x)
#else
#define debug(x...)
#endif

#define UNIQUE(v) v.erase(unique(v.begin(), v.end()), v.end());
#define REP(i, n) for (int i = 0; i < (int)(n); i++)
#define FOR(i, a, b) for (int i = (a); i < (b); i++)

typedef long long ll;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    ll sx, sy, tx, ty;
    cin >> sx >> sy >> tx >> ty;

    ll dx[4] = {1, 0, -1, 0};
    ll dy[4] = {0, 1, 0, -1};

    vector<vector<ll>> S(2010, vector<ll>(2010, -1));  //通った道の履歴

    REP(step, 4) {
        vector<vector<ll>> d(2010, vector<ll>(2010, -1));  //始点からの距離
        pair<ll, ll> start, goal;
        if (step % 2 == 0) {
            start = {sx+1005, sy+1005};
            goal = {tx+1005, ty+1005};
        } else {
            goal = {sx+1005, sy+1005};
            start = {tx+1005, ty+1005};
        }
        d[start.first][start.second] = 0;

        vector<vector<ll>> prev_x(
            2010, vector<ll>(2010, -1));  //過去に通った道の追跡用
        vector<vector<ll>> prev_y(
            2010, vector<ll>(2010, -1));  //過去に通った道の追跡用
        S[start.first][start.second] = -1;
        S[goal.first][goal.second] = -1;

        queue<pair<ll, ll>> que;
        que.push(start);
        while (que.size()) {
            pair<ll, ll> p = que.front();
            que.pop();
            for (ll i = 0; i < 4; i++) {
                ll nx = p.first + dx[i], ny = p.second + dy[i];
                if (0 <= nx && nx < 2010 && 0 <= ny && ny < 2010 &&
                    d[nx][ny] == -1 && S[nx][ny] == -1) {
                    que.push({nx, ny});
                    d[nx][ny] = d[p.first][p.second] + 1;
                    prev_x[nx][ny] = p.first;
                    prev_y[nx][ny] = p.second;
                }
            }
            if (d[goal.first][goal.second] != -1) break;
        }
        ll x = goal.first;
        ll y = goal.second;
        while (x != start.first || y != start.second) {
            ll px = prev_x[x][y];
            ll py = prev_y[x][y];
            S[px][py] = 1;
            if (px - x == -1 && py - y == 0) {
                cout << 'R';
            } else if (px - x == 1 && py - y == 0) {
                cout << 'L';
            } else if (px - x == 0 && py - y == -1) {
                cout << 'U';
            } else if (px - x == 0 && py - y == 1) {
                cout << 'D';
            } else {
                cout << "Error!!" << endl;
            }
            x = px, y = py;
        }
    }
    cout << endl;

    return 0;
}


Measured memory_bytes: 126912