#include <iostream>
#include <cmath>
using namespace std;
struct coor
{
int x, y;
};
int main()
{
coor Destination;
coor Horse[9];
cin >> Destination.x >> Destination.y;
cin >> Horse[0].x >> Horse[0].y;
Horse[2].x = Horse[0].x + 2; Horse[2].y = Horse[0].y + 1;
Horse[3].x = Horse[0].x + 2; Horse[3].y = Horse[0].y - 1;
Horse[1].x = Horse[0].x + 1; Horse[1].y = Horse[0].y + 2;
Horse[4].x = Horse[0].x + 1; Horse[4].y = Horse[0].y - 2;
Horse[6].x = Horse[0].x - 2; Horse[6].y = Horse[0].y - 1;
Horse[7].x = Horse[0].x - 2; Horse[7].y = Horse[0].y + 1;
Horse[5].x = Horse[0].x - 1; Horse[5].y = Horse[0].y - 2;
Horse[8].x = Horse[0].x - 1; Horse[8].y = Horse[0].y + 2;
int Map[21][21] = {};
Map[0][0] = 1;
for (int i = 0; i < 9; ++i)
{
if (Horse[i].y >= 0 && Horse[i].x >= 0 && Horse[i].y<=20 && Horse[i].x<=20)
Map[Horse[i].x][Horse[i].y] = -1;
}
for (int i = 0; i <= Destination.x; ++i)
{
for (int j = 0; j <= Destination.y; ++j)
{
if (Map[i][j] == -1 || (Map[i - 1][j] == -1 && Map[i][j - 1] == -1)
|| i == 0 && j == 0 || (Map[i - 1][0] == -1 && j == 0) || (Map[0][j - 1] == -1 && i == 0))
continue;
else if (Map[i - 1][j] == -1 || i == 0)
Map[i][j] = Map[i][j - 1];
else if (Map[i][j - 1] == -1 || j == 0)
Map[i][j] = Map[i - 1][j];
else
{
Map[i][j] = Map[i - 1][j] + Map[i][j - 1];
}
}
}
cout << Map[Destination.x][Destination.y];
return 0;
}