#include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
int dx[9] = { 0,1,2,2,1,-1,-2,-2,-1 };
int dy[9] = { 0,2,1,-1,-2,-2,-1,1,2 };
long long cnt[27][27] = { 0 };
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
m+=5;n+=5;
int mx, my;
cin >> mx >> my;
my+=5;mx+=5;
int num1 = 1, num2 = 1;
for (int i = 5; i <= n; i++) {
for (int k = 0; k < 9; k++) {
if (my + dy[k] == i && mx + dx[k] == 0) {
num1 = 0;
}
}
cnt[i][5] = num1;
}
for (int i = 5; i <= m; i++) {
for (int k = 0; k < 9; k++) {
if (mx + dx[k] == i && my + dy[k] == 0) {
num2 = 0;
}
}
cnt[5][i] = num2;
}
if (n == 5) {
for (int i = 5; i <= 0; i++)
for (int j = 6; j <= m; j++) {
cnt[i][j] = cnt[i - 1][j] + cnt[i][j - 1];
for (int k = 0; k < 9; k++)
if (i == mx + dx[k] && j == my + dy[k]) cnt[i][j] = 0;
}
cout << cnt[n][m];
return 0;
}
if (m == 5) {
for (int i = 6; i <= n; i++)
for (int j = 5; j <= 5; j++) {
cnt[i][j] = cnt[i - 1][j] + cnt[i][j - 1];
for (int k = 0; k < 9; k++)
if (i == mx + dx[k] && j == my + dy[k]) cnt[i][j] = 0;
}
cout << cnt[n][m];
return 0;
}
for (int i = 6; i <= n; i++) {
for (int j = 6; j <= m; j++) {
cnt[i][j] = cnt[i - 1][j] + cnt[i][j - 1];
for (int k = 0; k < 9; k++)
if (i == mx + dx[k] && j == my + dy[k]) cnt[i][j] = 0;
}
}
for(int i=5;i<=n;i++)
{
for(int j=5;j<=m;j++)
cout<<cnt[i][j]<<" ";
cout<<endl;
}
cout << cnt[n][m];
return 0;
}