#include<iostream>
using namespace std;
int cls[20][20];
long long gs[20][20];
int by,bx,my,mx;
bool flag(int x,int y);
long long sum(int x,int y);
int main(){
for(int i=0;i<=19;i++){
for(int j=0;j<=19;j++){
gs[i][j]=-1;
}
}
cin>>bx>>by>>mx>>my;
cls[my][mx]=1;
if(flag(mx-1,my-2))cls[my-2][mx-1]=1;
if(flag(mx-2,my-1))cls[my-1][mx-2]=1;
if(flag(mx-2,my+1))cls[my+1][mx-2]=1;
if(flag(mx-1,my+2))cls[my+2][mx-1]=1;
if(flag(mx+1,my+2))cls[my+2][mx+1]=1;
if(flag(mx+2,my+1))cls[my+1][mx+2]=1;
if(flag(mx+2,my-1))cls[my-1][mx+2]=1;
if(flag(mx+1,my-2))cls[my-2][mx+1]=1;
cout<<sum(0,0);
return 0;
}
bool flag(int x,int y){
if(x<0||x>bx||y<0||y>by){
return 0;
}
else{
return 1;
}
}
long long sum(int x,int y){
if(cls[y][x]==1||flag(x,y)==0){
return 0;
}
if(x==bx&&y==by){
return 1;
}
if(gs[y][x]!=-1){
return gs[y][x];
}
gs[y][x]=sum(x+1,y)+sum(x,y+1);
return gs[y][x];
}