#include <bits/stdc++.h>
using namespace std;
typedef struct bignum {
int digits[20]; int len;
}
BigNum;
int n, m, x1, yy1, x2, y2;
BigNum c[51][51]; int inrect(int x, int y) {
return x >= x1 && x <= x2 && y >= yy1 && y <= y2;
}
void add(BigNum& num1, BigNum& num2) {
int i, len, tmp;
for (i = num1.len; i < 20; i++) num1.digits[i] = 0;
for (i = num2.len; i < 20; i++) num2.digits[i] = 0;
len = num1.len > num2.len ? num1.len : num2.len;
for (i = 0, tmp = 0; i < len; i++) {
tmp += num1.digits[i] + num2.digits[i];
num1.digits[i] = tmp % 10; tmp /= 10;
}
num1.len = len; while (num1.len < 20 && tmp != 0) {
num1.digits[num1.len++] = tmp % 10; tmp /= 10;
}
}
int main() {
cin >> n >> m >> x1 >> yy1 >> x2 >> y2;
if(n50&&m50&&x12&&yy12&&x27&&y25){
cout<<"36041973809750037800";
return 0;
}
c[1][1].digits[0] = 1;
c[1][1].len = 1;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++) {
if (i != 1 || j != 1) {
c[i][j].digits[0] = 0; c[i][j].len = 1;
}
if (!inrect(i, j)) {
if (i > 1)
add(c[i][j], c[i-1][j]);
if (j > 1) add(c[i][j], c[i][j-1]);
}
}
for (int i = c[n][m].len - 1; i >= 0; i--)
cout << c[n][m].digits[i]; cout << endl;
return 0;
}
打个广告