Hanjo
#include <bits/stdc++.h>
using namespace std;
int n, m, a, b;
int st[20][20];
int ans = 0;
void dfs(int x, int y, int a, int b)
{
if (a < 0) return;
if (b < 0) return;
if (y == m + 1) return dfs(x + 1, 1, a, b);
if (x == n && y == m)
{
return (void)ans ++;
}
if (st[x][y]) return dfs(x, y + 1, a, b);
if (y < m && !st[x][y + 1] && a > 0)
{
st[x][y] = st[x][y + 1] = true;
dfs(x, y + 1, a - 1, b);
st[x][y] = st[x][y + 1] = false;
}
if (x < n && !st[x + 1][y] && a > 0)
{
st[x][y] = st[x + 1][y] = true;
dfs(x, y + 1, a - 1, b);
st[x][y] = st[x + 1][y] = false;
}
if (b > 0) dfs(x, y + 1, a, b - 1);
}
int main()
{
cin >> n >> m >> a >> b;
dfs(1, 1, a, b);
cout << ans << endl;
return 0;
}