#include <bits/stdc++.h>
using namespace std;
int T;
long long n;
int c[40];
long long C[40][40];
void init(int n) {
  C[0][0] = 1;
  for (int i = 1; i <= n; i++) {
    C[i][0] = C[i][i] = 1;
    for (int j = 1; j < i; j++) {
      C[i][j] = C[i - 1][j] + C[i - 1][j - 1];
    }
  }
}
long long calc(int cnt) {
  long long f = 1;
  int space = 1;
  for (int i = cnt; ~i; i--) {
    if (space < 0) {
      if (c[i]) return 0;
    } else {
      f *= C[space][c[i]];
      space -= c[i];
    }
    space += (i != 1);
  }
  return f;
}
int main() {
  init(35);
  scanf("%d", &T);
  while (T--) {
    scanf("%lld", &n);
    memset(c, 0, sizeof(c));
    int cnt;
    for (cnt = 1; n; cnt++) {
      c[n % (cnt + 1)]++;
      n /= (cnt + 1);
    }
    --cnt;
    long long ans = calc(cnt);
    if (c[0] && !c[cnt]) {
      c[0]--;
      ans -= calc(cnt - 1);
    }
    --ans;
    printf("%lld\n", ans);
  }
  return 0;
}
