#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
int mx,my,bx,by;
int n,m;
int xx[10]={0,2,1,-1,-2,-2,-1,1,2};
int yy[10]={0,1,2,2,1,-1,-2,-2,-1};
int f[45][45];
bool check(int x,int y)
{
for(int i=0;i<9;i++)
{
int vx=mx+xx[i];
int vy=my+yy[i];
if(vx<0 || vx>n || vy<0 || vy>m) continue;
if(x==vx && y==vy) return false;
}
return true;
}
int dfs(int x,int y)
{
if(x<0 || x>n || y<0 || y>m) return 0;
if(check(x,y)==false) {
return f[x][y]=0;
}
if(f[x][y]!=-1) return f[x][y];
return f[x][y]=dfs(x-1,y)+dfs(x,y-1);
}
main()
{
cin>>bx>>by>>mx>>my;
n=bx,m=by;
memset(f,-1,sizeof(f));
for(int i=0;i<=n;i++)
f[i][0]=1;
for(int i=0;i<=m;i++)
f[0][m]=1;
cout<<dfs(bx,by);
return 0;
}