#include<stdio.h>
#include<stdlib.h>
int main()
{
int n=0, m = 0;
int x = 0, y = 0;
int i = 0, j = 0;
int lujin(int n, int m, int x, int y, int i, int j);
scanf("%d %d %d %d", &n,&m,&x,&y);
if (((x == 0) & (y == 0)) || ((x == n) && (y == m)))
printf("0");
else
{
int zu=lujin(n, m, x, y, i, j);
printf("%d", lujin(n, m, x, y, i, j));
}
return 0;
}
int lujin(int n, int m, int x, int y, int i, int j)
{
if ((i + 1 == n) && (j == m))
return 1;
if ((i == n) && (j + 1 == m))
return 1;
if ((i + 1 <= n) && (j <= m) && (((abs(i + 1 - x) + abs(j - y)) != 3) || ((i + 1 == x) && (abs(j - y) == 3)) || ((j == y) && (abs(i + 1 - x) == 3))) && (((i + 1) != x) || (j != y)))
{
if ((i <= n) && (j + 1 <= m) && (((abs(i - x) + abs(j + 1 - y)) != 3) || ((i == x) && (abs(j + 1 - y) == 3)) || ((j + 1 == y) && (abs(i - x) == 3))) && ((i != x) || ((j + 1) != y)))
return (lujin(n, m, x, y, i + 1, j) + lujin(n, m, x, y, i, j + 1));
else
return(lujin(n, m, x, y, i + 1, j));
}
else if ((i <= n) && (j + 1 <= m) && (((abs(i - x) + abs(j + 1 - y)) != 3) || ((i == x) && (abs(j + 1 - y) == 3)) || ((j + 1 == y) && (abs(i - x) == 3))) && ((i != x) || ((j + 1) != y)))
return(lujin(n, m, x, y, i, j + 1));
else
return 0;
}