#include <bits/stdc++.h>
using namespace std;
#define ll long long
bool is_valid(int a,int b,int m,int n)
{
if(a>=0&&b>=0&&a<=m&&b<=n)return true;
return false;
}
int main()
{
int m,n,a,b;
cin>>m>>n>>a>>b;
ll res[m+1][n+1];
int num[m+1][n+1];
for(int i=0;i<=m;i++)
{
for(int j=0;j<=n;j++)
{
num[i][j]=0;
}
}
if(a-1,b-2,m,n)num[a-1][b-2]=1;
if(a+1,b-2,m,n)num[a+1][b-2]=1;
if(a-2,b-1,m,n)num[a-2][b-1]=1;
if(a+2,b-1,m,n)num[a+2][b-1]=1;
if(a-2,b+1,m,n)num[a-2][b+1]=1;
if(a-1,b+2,m,n)num[a-1][b+2]=1;
if(a+1,b+2,m,n)num[a+1][b+2]=1;
if(a+2,b+1,m,n)num[a+2][b+1]=1;
if(a,b,m,n)num[a][b]=1;
bool flag1=1,flag2=1;
for(int i=0;i<=m;i++)
{
for(int j=0;j<=n;j++)
{
if(i==0&&num[i][j]==1)flag1=0;
if(j==0&&num[i][j]==1)flag2=0;
if(i==0&&num[i][j]==0)
{
if(flag1)res[i][j]=1;
else res[i][j]=0;
continue;
}
if(j==0&&num[i][j]==0)
{
if(flag2)res[i][j]=1;
else res[i][j]=0;
continue;
}
if(num[i][j]==1)res[i][j]=0;
else res[i][j]=res[i-1][j]+res[i][j-1];
}
}
cout<<res[m][n];
}
明明开了longlong ,而且也考虑到初始化马能跳到的地方后面全部过不了