#include #include using namespace std; using ll = long long; #define rep(i, s, t) for (ll i = s; i < (ll)(t); i++) #define all(x) begin(x), end(x) template bool chmin(T& x, T y) { return x > y ? (x = y, true) : false; } template bool chmax(T& x, T y) { return x < y ? (x = y, true) : false; } void solve() { ll h, w, sx, sy, x, y; cin >> h >> w >> sx >> sy >> x >> y; sx--, sy--, x--, y--; // h = 100, w = 10; // sx = rand() % h, sy = rand() % w; // x = sx; // y = sy; // while (x == sx) x = rand() % h; // while (y == sy) y = rand() % w; // cout << " -> " << h << " " << w << ' ' << sx << ' ' << sy << ' ' << x << // ' ' // << y << endl; ll gd = [&]() { return 0ll; vector> cnt(h, vector(w, 1e9)); vector dx = {0, 1, 1, 1, 0, -1, -1, -1}; vector dy = {1, 1, 0, -1, -1, -1, 0, 1}; auto isin = [&](int a, int b) { return (0 <= a && a < h && 0 <= b && b < w && (a != x || b != y)); }; vector> q; q.push_back({(int)sx, (int)sy}); cnt[sx][sy] = 0; rep(lp, 0, q.size()) { auto [xx, yy] = q[lp]; rep(d, 0, 8) { int nx = xx + dx[d], ny = yy + dy[d]; while (isin(nx, ny)) { if (chmin(cnt[nx][ny], cnt[xx][yy] + 1)) q.push_back({nx, ny}); nx += dx[d], ny += dy[d]; } } } ll res = 0; rep(i, 0, h) rep(j, 0, w) { if (i != x || j != y) res += cnt[i][j]; } return res; }(); ll ans = h * w * 2; if (sx != x && sy != y) { ans -= h + w; if (sx + sy == x + y) { if (x < sx) { // y > sy // rep(i, x + 1, h) { // int j = x + y - i; // [x+y-h+1, y) // [0,y) // } ans -= min(y, h - x - 1); } else { // x > sx, y < sy // rep(i, 0, x) { // int j = x + y - i; // [y + 1, x + y + 1) // [y + 1, w) // } ans -= min(x, w - y - 1); } } else { // rep(i, 0, h) { // int j = sx + sy - i; // [sx+sy-h+1, sx + sy + 1) // } // cout << sx + sy - h + 1 << ' ' << sx + sy + 1 << endl; // cout << 0 << ' ' << w << endl; ans -= max(min(w, sx + sy + 1) - max(0ll, sx + sy - h + 1), 0ll); } if (sx - sy == x - y) { if (sx < x) { // rep(i, 0, x) { // int j = i - x + y; // [-x+y, y) // [0, y) // } ans -= min(y, x); } else { // rep(i, x + 1, h) { // int j = i - x + y; // [y + 1, h -x + y) // [y + 1, w) // } ans -= min(h - x - 1, w - y - 1); } } else { // rep(i, 0, h) { // int j = i - sx + sy; // [-sx+sy, h-sx+sy) // } ans -= max(min(h - sx + sy, w) - max(-sx + sy, 0ll), 0ll); } } else { ans -= max(min(w, sx + sy + 1) - max(0ll, sx + sy - h + 1), 0ll); ans -= max(min(h - sx + sy, w) - max(-sx + sy, 0ll), 0ll); if (y == sy) { swap(h, w); swap(sx, sy); swap(x, y); } if (sx < h - 1 - sx) { x = h - 1 - x; sx = h - 1 - sx; } assert(x == sx); if (y < sy) { y = w - 1 - y; sy = w - 1 - sy; } ans -= h; ans -= y; ll y2 = sx + sy; ll y3 = sx * 2 + sy; // cout << ans << " ; " << y2 << ' ' << y3 << ' ' << y << ' ' << w << // endl; if (y3 < w) { ans += w - 1 - max(y, y3); } else { y3 -= (y3 - w + 1) / 2 * 2; } // cout << ans << " ; " << y2 << ' ' << y3 << ' ' << y << ' ' << w << // endl; ans += max((y3 - max(y2, y)) / 2, 0ll); // cout << ans << '\n'; } // cout << gd << ' ' << ans << endl; // assert(gd == ans); cout << ans << '\n'; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(15); int t = 1; cin >> t; while (t--) solve(); }