#include <bits/stdc++.h>
using namespace std;
int T;
int N1, N2, N3;
int M1, M2, M3;
int S1, S2, S3;
long long N, M, S;
long long ans, prod = 1;
bool V[1000005];
int Prime[1000005];
vector<int> Aux;
int Exp[2][1000005];
int Pos[1000005];
long long A[100005], cnt, b[100005];
void Eratostenes() {
  for (int i = 2; i <= 1000000; i++) {
    if (V[i] == 0) {
      Prime[++Prime[0]] = i;
      Pos[i] = Prime[0];
      for (int j = i + i; j <= N; j += i) V[j] = 1;
    }
  }
}
void Factorization(int ind, int x) {
  int i = 1, init = x;
  while (i <= Prime[0] && (1LL * Prime[i] * Prime[i]) <= init &&
         Prime[i] <= x) {
    if (x % Prime[i] == 0) {
      Aux.push_back(Prime[i]);
    }
    while (x % Prime[i] == 0) {
      Exp[ind][Prime[i]]++;
      x /= Prime[i];
    }
    ++i;
  }
  if (x > 1) {
    Aux.push_back(x);
    Exp[ind][x]++;
  }
}
void SolveStage2(int k) {
  long long cnt = 1;
  for (int i = 0; i <= Exp[0][Aux[k - 1]]; i++) {
    if (prod <= N && k == Aux.size()) ans++;
    if (k < Aux.size()) SolveStage2(k + 1);
    if (i < Exp[0][Aux[k - 1]]) {
      cnt *= Aux[k - 1];
      prod *= Aux[k - 1];
    }
  }
  prod /= cnt;
}
void buildA() {
  for (int i = 0; i < Aux.size(); i++) {
    int a = Aux[i];
    if (Exp[1][a] > Exp[0][a]) {
      long long nb = 1;
      for (int j = 1; j <= Exp[0][a] + 1; j++) nb *= a;
      A[++cnt] = nb;
    }
  }
}
void SolveStage1(int k) {
  for (int i = b[k - 1] + 1; i <= cnt; i++) {
    b[k] = i;
    prod *= A[i];
    if (k % 2 == 0)
      ans += M / prod;
    else
      ans -= M / prod;
    if (k < cnt) SolveStage1(k + 1);
    prod /= A[i];
  }
}
int main() {
  int T;
  cin >> T;
  Eratostenes();
  while (T--) {
    cin >> N1 >> N2 >> N3;
    N = (1LL * N1 * N2 * N3);
    cin >> M1 >> M2 >> M3;
    M = (1LL * M1 * M2 * M3);
    cin >> S1 >> S2 >> S3;
    S = (1LL * S1 * S2 * S3);
    Factorization(0, S1);
    Factorization(0, S2);
    Factorization(0, S3);
    if (Exp[0][2] == 0) Aux.push_back(2);
    Exp[0][2]++;
    sort(Aux.begin(), Aux.end());
    Aux.erase(unique(Aux.begin(), Aux.end()), Aux.end());
    SolveStage2(1);
    Factorization(1, N1);
    Factorization(1, N2);
    Factorization(1, N3);
    sort(Aux.begin(), Aux.end());
    Aux.erase(unique(Aux.begin(), Aux.end()), Aux.end());
    buildA();
    SolveStage1(1);
    cout << ans + M << "\n";
    cnt = 0;
    for (int i = 0; i < Aux.size(); i++) Exp[0][Aux[i]] = Exp[1][Aux[i]] = 0;
    ans = 0;
    Aux.clear();
    prod = 1;
  }
  return 0;
}
