#include<iostream>
#include<vector>
#include<cstring>
typedef long long ll;
using namespace std;
void cannot_pass(ll (&a)[30][30], ll hi, ll hj)
{
a[hi - 1][hj - 2] = 0;
a[hi - 1][hj + 2] = 0;
a[hi + 1][hj - 2] = 0;
a[hi + 1][hj + 2] = 0;
a[hi - 2][hj - 1] = 0;
a[hi - 2][hj + 1] = 0;
a[hi + 2][hj - 1] = 0;
a[hi + 2][hj + 1] = 0;
}
void do_dp(ll (&a)[30][30], ll (&dp)[30][30], ll bi, ll bj)
{
for(ll i = 0; i <= bi; i++)
if(a[i][0] != 0) dp[i][0] = 1;
else break;
for(ll j = 0; j <= bj; j++)
if(a[0][j] != 0) dp[0][j] = 1;
else break;
for(ll i = 1; i <= bi; i++)
{
for(ll j = 1; j <= bj; j++)
{
if(a[i][j] == 0) dp[i][j] = 0;
else dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
}
cout << dp[bi][bj];
}
int main()
{
long long a[30][30];
memset(a, 1, sizeof(a));
long long Bi, Bj, hi, hj, dp[30][30] = {{0}};
cin >> Bi >> Bj >> hi >> hj;
a[hi][hj] = 0;
cannot_pass(a, hi, hj);
do_dp(a, dp, Bi, Bj);
return 0;
}