#include<iostream>
#include<string.h>
#include<cmath>
using namespace std;
int xb,yb,hx,hy;
int f[16][16];
bool cap[16][16]; //标识 占领点
int dp()
{
int i,j;
cap[hx][hy] = 1;
for(i = hx-2; i <= hx+2; i++)
{
for(j = hy-2; j <= hy+2; j++)
{
if(i >= 0 && j>=0 && i <= xb && j <= yb && abs(hx-i)*abs(hy-j) == 2)
cap[i][j] = 1;
}
}
for(i = 0; i <= xb; i++)
{
for(j = 0; j <= yb; j++)
{
if(!cap[i][j] && i > 0)
f[i][j] = f[i-1][j];
if(!cap[i][j] && j > 0)
f[i][j] += f[i][j-1];
/* if(!cap[i][j] && i != 0 && j != 0)
f[i][j] = f[i-1][j] + f[i][j-1];
else if(!cap[i][j] && i == 0) //j也要判断是否大于0,否则下标越界。
f[i][j] = f[i][j-1];
else if(!cap[i][j] && j == 0) //i同上
f[i][j] = f[i-1][j];
*/
}
}
/* for(i = 0; i <= xb; i++)
{
for(j = 0; j <= yb; j++)
{
cout<<cap[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
for(i = 0; i <= xb; i++)
{
for(j = 0; j <= yb; j++)
{
cout<<f[i][j]<<" ";
}
cout<<endl;
}*/
return f[xb][yb];
}
int main()
{
memset(f,0,sizeof(f));
memset(cap,0,sizeof(cap));
f[0][0] = 1; //初始态不是0
cin>>xb>>yb>>hx>>hy;
cout<<dp()<<endl;
return 0;
}
*************************************************************************************仅供吐槽