#include <bits/stdc++.h>
using namespace std;
long long a3, b3, c3, d3;
void findIn(long long a1, long long b1, long long c1, long long d1,
            long long a2, long long b2, long long c2, long long d2) {
  a3 = max(a1, a2);
  b3 = max(b1, b2);
  c3 = min(c1, c2);
  d3 = min(d1, d2);
}
bool valid(long long a, long long b, long long c, long long d) {
  return (a <= c) && (b <= d);
}
long long top(long long a, long long b) {
  if (a % b) {
    return a / b + 1;
  }
  return a / b;
}
int main() {
  long long white;
  long long n, m, t;
  long long a1, b1, c1, d1;
  long long a2, b2, c2, d2;
  cin >> t;
  while (t--) {
    cin >> n >> m;
    white = top(n * m, 2);
    cin >> a1 >> b1 >> c1 >> d1;
    cin >> a2 >> b2 >> c2 >> d2;
    findIn(a1, b1, c1, d1, a2, b2, c2, d2);
    if (a1 % 2 == b1 % 2) {
      white += ((c1 - a1 + 1) * (d1 - b1 + 1)) / 2;
    } else {
      white += top((c1 - a1 + 1) * (d1 - b1 + 1), 2);
    }
    if (valid(a3, b3, c3, d3)) {
      if (a3 % 2 == b3 % 2) {
        white -= ((c3 - a3 + 1) * (d3 - b3 + 1)) / 2;
      } else {
        white -= top((c3 - a3 + 1) * (d3 - b3 + 1), 2);
      }
    }
    if (a2 % 2 == b2 % 2) {
      white -= top((c2 - a2 + 1) * (d2 - b2 + 1), 2);
    } else {
      white -= ((c2 - a2 + 1) * (d2 - b2 + 1)) / 2;
    }
    cout << white << " " << m * n - white << endl;
  }
}
