# include <iostream>
# include <algorithm>
# include <string>
# include <functional>
# include <vector>
# include <cstring>
# include <cmath>
# include <cstdio>
# include <queue>
# include <cstdlib>
using namespace std;
int n, m, t, mx, my, ans = 0;
bool a[25][25];
int dir[2][2] = {{1, 0}, {0, -1}};
bool in(int x, int y)
{
return (x >= 1 && x <= n) && (y >= 1 && y <= m);
}
void dfs(int x, int y)
{
if (x == n && y == m)
{
ans++;
return;
}
for (int i = 0; i < 2; i++)
{
int x1 = x + dir[i][0];
int y1 = y + dir[i][1];
if (!in(x1, y1) || a[x1][y1] == false) continue;
a[x1][y1] = false;
dfs(x1, y1);
a[x1][y1] = true;
}
}
int main()
{
cin >> n >> m >> mx >> my;
memset (a, true, sizeof(a));
a[mx][my] = false;
if (in(mx + 1, my + 2)) a[mx + 1][my + 2] = false;
if (in(mx + 1, my - 2)) a[mx + 1][my - 2] = false;
if (in(mx + 2, my + 1)) a[mx + 2][my + 1] = false;
if (in(mx + 2, my - 1)) a[mx + 2][my - 1] = false;
if (in(mx - 1, my + 2)) a[mx - 1][my + 2] = false;
if (in(mx - 1, my - 2)) a[mx - 1][my - 2] = false;
if (in(mx - 2, my + 1)) a[mx - 2][my + 1] = false;
if (in(mx - 2, my - 1)) a[mx - 2][my - 1] = false;
dfs(1, 1);
cout << ans << endl;
return 0;
}
全部报零