#include <bits/stdc++.h>
using namespace std;
int i, j, k, s, t;
int read() {
  int x = 0;
  char ch = getchar();
  while (ch < '0' || ch > '9') ch = getchar();
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x;
}
int n1, n2, n3, p1, p2, p3, m1, m2, m3, st;
long long m, n, ans;
int st2[1010000], sta[1010000];
struct data {
  int p, q;
};
bool cmp(const data &a, const data &b) { return a.p < b.p; }
struct da {
  data a[50];
  int n;
} a, b;
long long qpow(long long x, int y) {
  long long ans = 1;
  while (y) {
    if (y & 1) ans *= x;
    x *= x;
    y >>= 1;
  }
  return ans;
}
void solve1(int x, long long y) {
  if (y > n) return;
  if (x == b.n + 1) {
    ans++;
    return;
  }
  solve1(x + 1, y);
  for (int i = 1; i <= b.a[x].q; i++) y *= b.a[x].p, solve1(x + 1, y);
}
void solve2(int x, long long y, int f) {
  if (!y) return;
  if (x == st + 1) {
    ans += y * f;
    return;
  }
  solve2(x + 1, y, f);
  for (int i = 1; i <= st2[x]; i++) y /= sta[x];
  solve2(x + 1, y, -f);
}
void pre(da &a, int x) {
  int i, j, k;
  for (i = 1; i <= a.n; i++)
    while (x % a.a[i].p == 0) x /= a.a[i].p, a.a[i].q++;
  for (i = 2; i * i <= x; i++)
    if (x % i == 0) {
      a.n++;
      a.a[a.n].p = i;
      a.a[a.n].q = 0;
      while (x % i == 0) x /= i, a.a[a.n].q++;
    }
  if (x > 1) {
    a.n++;
    a.a[a.n].p = x;
    a.a[a.n].q = 1;
  }
}
int main() {
  int T = read();
  while (T--) {
    n1 = read();
    n2 = read();
    n3 = read();
    n = (long long)n1 * n2 * n3;
    m1 = read();
    m2 = read();
    m3 = read();
    m = (long long)m1 * m2 * m3;
    p1 = read();
    p2 = read();
    p3 = read();
    a.n = 0;
    b.n = 0;
    ans = 0;
    pre(a, n1);
    pre(a, n2);
    pre(a, n3);
    pre(b, p1);
    pre(b, p2);
    pre(b, p3);
    pre(b, 2);
    sort(a.a + 1, a.a + a.n + 1, cmp);
    sort(b.a + 1, b.a + b.n + 1, cmp);
    solve1(1, 1);
    j = 1;
    st = 0;
    for (i = 1; i <= a.n; i++) {
      while (b.a[j].p < a.a[i].p && j <= b.n) j++;
      if (j == b.n + 1) break;
      if (b.a[j].p == a.a[i].p && a.a[i].q > b.a[j].q) {
        sta[++st] = a.a[i].p;
        st2[st] = b.a[j].q + 1;
      }
      if (b.a[j].p > a.a[i].p) {
        sta[++st] = a.a[i].p;
        st2[st] = 1;
      }
    }
    for (; i <= a.n; i++) {
      sta[++st] = a.a[i].p;
      st2[st] = 1;
    }
    solve2(1, m, 1);
    cout << ans << endl;
  }
}
