#include <iostream>
#define int long long int
#define TRUE 1
#define FALSE 0
using namespace std;
const int E1[9] = {0, -2, -1, 1, 2, 2, 1, -1, -2}, E2[9] = {0, 1, 2, 2, 1, -1, -2, -2, -1}; // ??? ??? ?????
int I1, I2, J1, J2, DP[45][45], i, j;
bool Block[45][45];
signed main () {
ios::sync_with_stdio(FALSE);
cin.tie(0);
cout.tie(0);
cin >> I1 >> I2 >> J1 >> J2;
I1 += 2, I2 += 2, J1 += 2, J2 += 2, DP[2][1] = 1, Block[J1][J2] = TRUE;
for (i = 1; i <= 8; ++i)
Block[J1 + E1[i]][J2 + E2[i]] = TRUE; // ???? - ???.
for (i = 2; i <= I1; ++i) {
for (j = 2; j <= I2; ++j) {
if (Block[i][j])
continue;
DP[i][j] = DP[i - 1][j] + DP[i][j - 1];
// ????? ?????????? ????????
}
}
cout << DP[J1][J2];
return 0;
}
谢谢,QaQ