#include<bits/stdc++.h>
const int N = 30 ;
#define read(a) {char c;while((c=getchar())>47) a=a*10+(c^48);}
using namespace std;
int n, m, k, r;
int v, p;
int ans =0;
int g[N];
int vis;
long long dp[N][N];
int main()
{
memset(dp, 0, sizeof(dp));
cin >> n >> m;
long long mx, my;
cin >> mx >> my;
n += 2, m += 2;
mx += 2, my += 2;
dp[mx][my] = -1;
dp[mx - 2][my + 1] = -1;
dp[mx - 1][my + 2] = -1;
dp[mx + 1][my + 2] = -1;
dp[mx + 2][my + 1] = -1;
dp[mx + 2][my - 1] = -1;
dp[mx + 1][my - 2] = -1;
dp[mx - 1][my - 2] = -1;
dp[mx - 2][my - 1] = -1;
for (int i = 2; i <= n; i++)
{
for (int j = 2; j <= m; j++)
{
if (i == 0 || i == 1 || i == n + 1 || i ==n + 2 || j == 0 || j == 1 || j == m + 1 || j == m + 2)
{
dp[i][j] = -1;
}
}
}
dp[2][2]=1;
for (int i = 2; i <= n; i++)
{
for (int j = 2; j <= m; j++)
{
if (dp[i][j] == -1||(i==2&&j==2))
continue;
if(dp[i-1][j]!=-1)
dp[i][j] += dp[i - 1][j];
if (dp[i][j - 1] != -1)
dp[i][j] += dp[i][j - 1];
}
}
cout << dp[n][m] << endl;
return 0;
}