#include<bits/stdc++.h>
using namespace std;
unordered_map<int,unordered_map<int,int>>f;
struct D {
long long x;
long long y;
}
;
D b,m;
int main() {
cin>>b.x>>b.y>>m.x>>m.y;
f[m.x+2][m.y+1]=-1;
f[m.x+1][m.y+2]=-1;
f[m.x-1][m.y+2]=-1;
f[m.x-2][m.y+1]=-1;
f[m.x-2][m.y-1]=-1;
f[m.x-1][m.y-2]=-1;
f[m.x+1][m.y-2]=-1;
f[m.x+2][m.y-1]=-1;
for (int i=0;i<=m.x;i++) {
for (int j=0;j<=m.y;j++) {
if(f[i][j]!=-1) {
f[i][j]=f[i-1][j]+f[i][j-1];
} else f[i][j]=0;
}
}
cout<<f[b.x][b.y];
return 0;
}