#include <bits/stdc++.h>
using namespace std;
int bx,by,hx,hy;
long long dp[25][25];
void in(int &x){
char c;
c=getchar();
while(c<'0'||c>'9') c=getchar();
for(;c>='0'&&c<='9';c=getchar())
x=x*10+(c-'0');
}
int main(){
in(bx),in(by),in(hx),in(hy);
//cout<<bx<<by<<hx<<hy;
dp[0][0]=1;
for(int i=1;i<=25;++i)
dp[i][0]=dp[0][i]=1;
dp[hx][hy]=-1;
dp[hx+1][hy+2]=dp[hx+2][hy+1]=-1;
if(hx==0||hy==0)
dp[hx][hy]=0;
if(hx<2||hy<2){
if(hx<2&&hy<2){
if(hx==1&&hy==1){
dp[hx+2][hy-1]=-1;
dp[hx-1][hy+2]=-1;
}
else if(hx==1&&hy==0){
dp[hx-1][hy+2]=-1;
}
else if(hx==0&&hy==1){
dp[hx+2][hy-1]=-1;
}
}
else if(hx<2){
if(hx==1){
dp[hx-1][hy-2]=dp[hx-1][hy+2]=-1;
dp[hx+1][hy-2]=dp[hx+2][hy-1]=-1;
}
else{
dp[hx+1][hy-2]=dp[hx+2][hy-1]=-1;
}
}
else{
if(hy==1){
dp[hx-2][hy-1]=dp[hx+2][hy-1]=-1;
dp[hx-2][hy+1]=dp[hx-1][hy+2]=-1;
}
else{
dp[hx-2][hy+1]=dp[hx-1][hy+2]=-1;
}
}
}
else{
dp[hx-1][hy-2]=dp[hx-2][hy-1]=-1;
dp[hx+1][hy-2]=dp[hx+2][hy-1]=-1;
dp[hx-2][hy+1]=dp[hx-1][hy+2]=-1;
}
for(int i=1;i<=20;++i){
for(int j=1;j<=20;++j){
if(dp[i][j]==-1){
dp[i][j]=0;
}
else{
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
}
for(int i=0;i<=20;++i){
for(int j=0;j<=20;++j)
cout<<dp[i][j]<<" ";
cout<<endl;
}
printf("%lld",dp[bx][by]);
return 0;
}