#include <stdio.h>
//马拦过河卒问题
int main(){
long long arr[21][21] = {0}; //二维数组棋盘20*20,全定义为0
int n,m; //B点坐标
int hx,hy; //马坐标
scanf("%d%d%d%d",&n,&m,&hx,&hy); //输入B坐标与马坐标
for ( int ix = 0; ix <= n ; ix++) //遍历x
{
for (int iy = 0; iy <= m; iy++) //遍历y
{
if (ix == 0 && iy == 0) //跳过00
{
continue;
}
if (ix == 0 || iy == 0) //赋予两端的路径为1种可能
{
arr[ix][iy] = 1;
}
else if (ix==hx+1&&iy==hy+2||ix==hx+2&&iy==hy+1|| //马的控制点标为0
ix==hx+1&&iy==hy-2||ix==hx+2&&iy==hy-1||
ix==hx-1&&iy==hy+2||ix==hx-2&&iy==hy+1||
ix==hx-1&&iy==hy-2||ix==hx-2&&iy==hy-1||
ix==hx&&iy==hy)
{
arr[ix][iy] = 0;
}
else
{
arr[ix][iy] = arr[ix-1][iy] + arr[ix][iy-1]; //递推算法
}
}
}
printf("%lld\n",arr[n][m]); //输出可能的路径数(路径算法)
return 0;
}