#define _GLIBCXX_DEBUG
#include<bits/stdc++.h>
#include<algorithm>//next_permutation
#define rep(i,n) for (int i = 0;i < (n);i++)
#define all(v) v.begin(),v.end()
#define dec(n) cout << fixed << setprecision(n);
#define large "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
#define small "abcdefghijklmnopqrstuvwxyz"
using namespace std;
using ll = long long;
using P = pair<ll,ll>;
using vl = vector<ll>;
using vvl = vector<vl>;

ll gcd(ll a,ll b){
  if(b == 0) return a;
  return gcd(b , a % b);
}

const ll MOD = 1000000007;
const ll MAX = 2000001;

ll mod(ll a){
  return a % MOD;
}

ll lcm(ll a,ll b){
  return (a*b)/gcd(a,b);
}

ll fac[MAX], finv[MAX], inv[MAX];

void nCrprep() {
    fac[0] = fac[1] = 1;
    finv[0] = finv[1] = 1;
    inv[1] = 1;
    for (ll i = 2; i < MAX; i++){
        fac[i] = fac[i - 1] * i % MOD;
        inv[i] = MOD - inv[MOD%i] * (MOD / i) % MOD;
        finv[i] = finv[i - 1] * inv[i] % MOD;
    }
}

ll nCr(ll n, ll r){
    if (n < r) return 0;
    if (n < 0 || r < 0) return 0;
    return fac[n] * (finv[r] * finv[n - r] % MOD) % MOD;
}

ll nCrcheep(ll n,ll r){
  if(r == 0) return 1;
  else if(r == 1) return n;
  else return nCrcheep(n-1,r-1)*n/r;
}

vector<pair<ll,ll>> prime_factorize(ll n){
  vector<pair<ll,ll>> res;
  
  for(ll i=2; i*i <= n; i++){
    if(n % i != 0) continue;
    
    ll ex = 0;
    while(n % i == 0){
      ex++;
      n /= i;
    }
    
    res.push_back({i,ex});
  }
  
  if(n != 1) res.push_back({n,1});
  
  return res;
  
}




int main(){
  ll sx,sy,tx,ty; cin >> sx >> sy >> tx >> ty;
  ll dx = tx - sx; ll dy = ty - sy;
  
  cout << string(dx,'R') << string(dy,'U') << string(dx,'L') << 
    string(dy,'D') << 'D' << string(dx+1,'R') <<
    string(dy+1,'U') << 'L' << 'U' << string(dx+1,'L') <<
    string(dy+1,'D') << 'R' << endl;
  
}
                                             
#include <bits/stdc++.h>
#define ll long long int
using namespace std;

ll mod = 1000000007;

ll fact[200010];


ll power(ll x, ll y, ll p) 
{ 
    ll res = 1;
  
    x = x % p;
  
    while (y > 0) 
    {
        if (y & 1) 
            res = (res*x) % p;
        y = y>>1;
        x = (x*x) % p; 
    } 
    return res; 
}


ll modInverse(ll n, ll p) 
{ 
    return power(n, p-2, p); 
}

void init(){

    fact[0] = 1;

	for(int i=1;i<=200005; i++){
		fact[i] = (fact[i-1]*i)%mod;
	}
}

ll sol(ll r, ll d){
    ll ans = fact[r+d];
    ans = (ans*modInverse(fact[r],mod))%mod;
    ans = (ans*modInverse(fact[d],mod))%mod;
    
    return ans;
}

int main() {
    init();
    int h,w,a,b;
    cin>>h>>w>>a>>b;
    
    ll ans = 0;
    ll t;
    
    for(int i=0; i<h-a; i++){
        t = 1;
        t = (t*sol(i,b-1))%mod;
        t = (t*sol(w-b-1,h-i-1))%mod;
        // cout<<i<<":"<<b<<" "<<w-b-1<<":"<<h-i-1<<'\n';
        ans = (ans + t)%mod;
    }
    
    cout<<ans;
    
    return 0;
}





