#include<bits/stdc++.h>
using namespace std;
int dx[]={2,2,1,1,-1,-1,-2,-2};
int dy[]={-1,1,-2,2,-2,2,-1,1};
int mp[25][25],f[25][25];
int main(){
int n,m,x,y;
cin>>n>>m>>x>>y;
mp[x][y]=1;
for(int i=0;i<8;i++){ //标记控制点
int nx=x+dx[i],ny=y+dy[i];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m)
mp[nx][ny]=1;
}
f[0][0]=1; //状态数组起点初始化
for(int i=0;i<=n;i++){
for(int j=0;j<=m;j++){
if(i==0&&j==0) continue; //起点跳过
if(mp[i][j]) continue; //控制点跳过
if(mp[i][j]==0){
f[i][j]=f[i-1][j]+f[i][j-1];
if(mp[i-1][j])
f[i][j]-=f[i-1][j]; //若为控制点,路径数量不加该点
if(mp[i][j-1])
f[i][j]-=f[i][j-1]; //同上
}
}
}
cout<<f[n][m];
return 0;
}