#include<stdio.h>
unsigned int a[30][30],f[30][30],n,m;
void d(int x,int y){
if(x<0||y<0||x>n||y>m)return;
a[x][y]=1;
}
int main(){
int x,y,i,j;
scanf("%d%d%d%d",&n,&m,&x,&y);
d(x,y);
d(x+1,y);d(x-1,y);
d(x,y+1);d(x,y-1);
a[0][0]=1;
for(i=1;i<=m;i++){
if(a[0][i]!=1)f[0][i]=1;
else break;
}
for(i=1;i<=n;i++){
if(a[i][0]!=1)f[i][0]=1;
else break;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]!=1)
f[i][j]=f[i-1][j]+f[i][j-1];
printf("%d\n",f[n][m]);
return 0;
unsigned int a[30][30],f[30][30],n,m;
void d(int x,int y){
if(x<0||y<0||x>n||y>m)return;
a[x][y]=1;
}
int main(){
int x,y,i,j;
scanf("%d%d%d%d",&n,&m,&x,&y);
d(x,y);
d(x+1,y);d(x-1,y);
d(x,y+1);d(x,y-1);
a[0][0]=1;
for(i=1;i<=m;i++){
if(a[0][i]!=1)f[0][i]=1;
else break;
}
for(i=1;i<=n;i++){
if(a[i][0]!=1)f[i][0]=1;
else break;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]!=1)
f[i][j]=f[i-1][j]+f[i][j-1];
printf("%d\n",f[n][m]);
return 0;
}