cpp
#include<bits/stdc++.h>
//因为这个题目的卒是在格子的交点上走的,所以从(0,0)到(1,1)
//实际上是走过了一个2*2的格子
#define ll long long
using namespace std;
ll int m,n,x,y;
ll int dp[30][30],a[30][30];
int dir[8][2]={{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{-2,1},{2,-1},{-2,-1}};
int main()
{
cin>>n>>m>>x>>y;
for(int i=0;i<8;i++)
{
int xx=dir[i][0]+x;
int yy=dir[i][1]+y;
a[xx][yy]=-1;
}
a[x][y]=-1;
// for(int i=0;i<=m;i++)
// {
// for(int j=0;j<=n;j++)
// printf("%5d",a[i][j]);
// cout<<endl;
// }
// cout<<endl;
// dp[0][0]=1;
for(int i=0;i<=m;i++)
for(int j=0;j<=n;j++)
{
if(a[i][j]!=-1)
{
if(i==0 && j==0) dp[0][0]=1;
else if(i==0) dp[i][j]=dp[i][j-1];
else if(j==0) dp[i][j]=dp[i-1][j];
else dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
// if(a[i][j]==-1) dp[i][j]=0;
// else if(i==1 || j==1) dp[i][j]=1;
// else dp[i][j]=dp[i-1][j]+dp[i][j-1];
// if((i==0 || j==0) && a[i][j]!=-1 ) dp[i][j]=1;
}
cout<<dp[n][m]<<endl;
return 0;
}