#include<bits/stdc++.h>

using namespace std;

int h,w,a,b;
int res=0;

bool vis[20][20];

void dfs(int n,int m) //n 2*1 m 1*1
{
	int flag=0;
	
	for(int i=1;i<=h;i++)
	{
		for(int j=1;j<=w;j++)
		{
			if(!vis[i][j])
			{
				flag=1;
				if(m)
				{
					vis[i][j]=1;
					dfs(n,m-1);
					vis[i][j]=0;
				}
				if(n)
				{
					if(j+1<=w&&!vis[i][j+1])
					{
						vis[i][j]=1;
						vis[i][j+1]=1;
						dfs(n-1,m);
						vis[i][j]=0;
						vis[i][j+1]=0;
					}
					
					if(i+1<=h&&!vis[i+1][j])
					{
						vis[i][j]=1;
						vis[i+1][j]=1;
						dfs(n-1,m);
						vis[i][j]=0;
						vis[i+1][j]=0;
					}
				}
				return ;
			}
		}
	}	
	if(!flag) res++;
} 

int main()
{	
	cin>>h>>w>>a>>b;
	dfs(a,b);
	cout<<res<<endl;
}
#include <string>
#include <iostream>
using namespace std;
using ll=long long;
using ull=unsigned long long;
#define rep(i,n) for(int i=0; i<(n); i++)





const int W=30, H=30;
const int query_num = 1000;




int main(){
  for(int i=0; i<query_num; i++){
    int sy,sx,ty,tx; cin >> sy >> sx >> ty >> tx;
    string ans = "";
    while(sx != tx){
      if(sx < tx){ ans += "R"; sx++; }
      else{ ans += "L"; sx--; }
    }
    while(sy != ty){
      if(sy < ty){ ans += "D"; sy++; }
      else{ ans += "U"; sy--; }
    }
    cout << ans << "\n" << flush;
    int result; cin >> result;
  }
  return 0;
}


struct ios_do_not_sync{
  ios_do_not_sync(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
  }
} ios_do_not_sync_instance;

