#include<cstdlib>
#include<cstdio>
#include<cctype>
#include<cstring>
#include<string>
#include<cmath>
#include<ctime>
#include<algorithm>
using namespace std;
int main()
{
bool p[29][29];
int x2,y2,x3,y3,i,j;
long long c[29][29];
memset(p,true,sizeof(p));
memset(c,0,sizeof(c));
scanf("%d%d%d%d",&x2,&y2,&x3,&y3);
x2+=2;y2+=2;x3+=2;y3+=2;//避免数组越界
p[x3][y3]=false;
p[x3+2][y3+1]=false;p[x3+2][y3-1]=false;p[x3+1][y3+2]=false;p[x3+1][y3-2]=false;
p[x3-2][y3-1]=false;p[x3-2][y3+1]=false;p[x3-1][y3+2]=false;p[x3-1][y3-2]=false;
for (i=2;i<=x2;i++)
if (p[i][2]) c[i][2]=1;
else break;
for (i=2;i<=y2;i++)
if (p[2][i]) c[2][i]=1;
else break;
for (i=3;i<=x2;i++)
for (j=3;j<=y2;j++)
if (p[i][j]) c[i][j]=c[i-1][j]+c[i][j-1];
printf("%lld",c[x2][y2]);
return 0;
}
#include<cstring>
using namespace std;
const int g[9][2]={{0,0},{-1,-2},{-2,-1},{-1,2},{-2,1},{1,-2},{2,-1},{1,2},{2,1}};
int main()
{
long long f[21][21];
int n,m,x,y,i,j;
cin>>n>>m>>x>>y;
int xx,yy;
memset(f,-1,sizeof(f));
for(i=0;i<9;i++)
{
xx=x+g[i][0];
yy=y+g[i][1];
if((xx>=0&&xx<=n)&&(yy>=0&&yy<=m)) f[xx][yy]=0;
}
f[0][0]=1;
for(i=1;i<=n;i++)
if(f[i][0]==-1) f[i][0]=f[i-1][0];
for(j=1;j<=m;j++)
if(f[0][j]==-1) f[0][j]=f[0][j-1];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(f[i][j]==-1) f[i][j]=f[i-1][j]+f[i][j-1];
cout<<f[n][m]<<endl;
return 0;
}