#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
long long n, m, s, tn, ts, Ans, t;
long long fac1[30], fac2[30], cnt1[30], cnt2[30], ttm[30], tts[30];
inline void dfs(long long x, long long ps) {
  if (x == fac2[0] + 1) {
    Ans += (ps <= tn);
    return;
  }
  dfs(x + 1, ps);
  for (long long i = 1, ts = ps * fac2[x]; i <= cnt2[x]; i++)
    dfs(x + 1, ts), ts *= fac2[x];
}
inline long long qpow(long long bas, long long pw) {
  long long ret = 1;
  for (long long i = 1; i <= pw; i++) ret = ret * bas;
  return ret;
}
inline void DFS(long long x, long long ps, long long f) {
  if (x == tts[0] + 1) {
    Ans += f * (m / ps);
    return;
  }
  DFS(x + 1, ps, f);
  DFS(x + 1, ps * qpow(tts[x], ttm[x]), -f);
}
signed main() {
  t = read();
  while (t--) {
    n = m = s = 1;
    for (long long i = 1; i <= 3; i++) n *= read();
    for (long long i = 1; i <= 3; i++) m *= read();
    for (long long i = 1; i <= 3; i++) s *= read();
    tn = n;
    ts = s;
    s *= 2;
    for (long long i = 2; i * i <= s; i++) {
      if (s % i == 0) fac2[++fac2[0]] = i;
      while (s % i == 0) s /= i, cnt2[fac2[0]]++;
    }
    if (s > 1) fac2[++fac2[0]] = s, cnt2[fac2[0]] = 1;
    for (long long i = 2; i * i <= n; i++) {
      if (n % i == 0) fac1[++fac1[0]] = i;
      while (n % i == 0) n /= i, cnt1[fac1[0]]++;
    }
    if (n > 1) fac1[++fac1[0]] = n, cnt1[fac1[0]] = 1;
    dfs(1, 1);
    for (long long i = 1; i <= fac1[0]; i++) {
      long long mx = 1;
      for (long long j = 1; j <= fac2[0]; j++)
        if (fac1[i] == fac2[j]) mx = max(mx, cnt2[j] + 1);
      if (mx <= cnt1[i]) tts[++tts[0]] = fac1[i], ttm[tts[0]] = mx;
    }
    DFS(1, 1, 1);
    cout << Ans << endl;
    Ans = 0;
    memset(fac1, 0, sizeof fac1);
    memset(fac2, 0, sizeof fac2);
    memset(cnt1, 0, sizeof cnt1);
    memset(cnt2, 0, sizeof cnt2);
    memset(ttm, 0, sizeof ttm);
    memset(tts, 0, sizeof tts);
  }
  return 0;
}
