#define _GLIBCXX_DEBUG
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

#define REP(i, n) for (ll i = 0; i < (ll)(n); i++)
#define REPR(i, n) for (ll i = (n); i >= 0; i--)
#define FOR(i, m, n) for (ll i = (m); i < (ll)(n); i++)
#define BIT(bit, n) for (int bit = 0; bit < (1 << (n)); ++bit)
#define INF 1000000000
//配列 vector<型> 配列名(要素数, 初期値);
//二次元配列 vector<vector<型>> 配列名(要素数縦,vector<int>(要素数横, 初期値))
//配列のサイズ(二次元縦) 配列名.size(), 二次元横 配列名[0].size()
// 1秒間のforループは10^8くらい
//小数点桁数 cout << fixed << setprecision(20) <<
// bit全探索 条件判定 if(bit & (1 << n))

int main() {
  int round;
  REP(k, 1000) {
    int Si, Sj, Ti, Tj;
    cin >> Si >> Sj >> Ti >> Tj;

    if (Si > Ti) {
      REP(i, Si - Ti) cout << "U";
    } else {
      REP(i, Ti - Si) cout << "D";
    }

    if (Sj > Tj) {
      REP(i, Sj - Tj) cout << "L";
    } else {
      REP(i, Tj - Sj) cout << "R";
    }
    cout << endl;
    cin >> round;
  }
}
//Soham
#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define soham1192k ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#ifndef ONLINE_JUDGE
#define debug(x) cerr<<#x<<" ";_print(x);cerr<<'\n';
#else
#define debug(x)
#endif
const int mod=1000000007;
const double pi = 3.14159265358979323846;
const int mxN=2e5+2;
void _print(int t) {cerr << t;}
void _print(string t) {cerr << t;}
void _print(char t) {cerr << t;}
void _print(double t) {cerr << t;}
template <class T, class V> void _print(pair <T, V> p);
template <class T> void _print(vector <T> v);
template <class T> void _print(set <T> v);
template <class T, class V> void _print(map <T, V> v);
template <class T> void _print(multiset <T> v);
template <class T, class V> void _print(pair <T, V> p) {cerr << "{"; _print(p.first); cerr << ","; _print(p.second); cerr << "}";}
template <class T> void _print(vector <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(set <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(multiset <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T, class V> void _print(map <T, V> v) {cerr << "[ "; for (auto i : v) {_print(i); cerr << " ";} cerr << "]";}
//*********************************************************************************************************************************************************************************************************
int p[200005];
int sz[200005];
int get(int x){
    if(p[x]==x) return x;
    return p[x]=get(p[x]);
}
void union_sets(int a, int b) {
    a = get(a);
    b = get(b);
    if (a != b) {
        if (sz[a]<sz[b])
            swap(a, b);
        p[b]=a;
        sz[a]+=sz[b];
    }
}
void solve(){
    int n;cin>>n;
    vector<int>a(n);
    for(int&x:a) cin>>x;
    for(int i=1;i<=n;i++){
        p[a[i-1]]=a[i-1];
        sz[a[i-1]]+=1;
    }
    int cnt=0;
    int i=0,j=n-1;
    for(i=0,j=n-1;i<j;i++,j--){
        int x=get(a[i]);
        int y=get(a[j]);
        if(x==y) ;
        else{
            cnt++;
            union_sets(a[i],a[j]);
        }
    }
    cout<<cnt<<'\n';
}
int32_t main(){
    soham1192k;
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    freopen("error.txt","w",stderr);
#endif  
    int T=1;
    // cin>>T;
    while(T--){
        solve();
    }
    return 0;
}