#include <bits/stdc++.h>
using namespace std;
const int N = 20;
long long fc[N + 10], cnt[N + 10], ans = 1, mini = 1;
long long power(long long a, long long b) {
  if (b == 0) return 1;
  long long rtr = power(a, b / 2);
  if (b % 2) return 1ll * rtr * rtr * a;
  return rtr * rtr;
}
void getFc() {
  fc[0] = 1;
  for (int i = 1; i <= N; i++) fc[i] = fc[i - 1] * i;
  return;
}
long long ch(int x, int y) { return fc[y] / fc[x] / fc[y - x]; }
int main() {
  getFc();
  int q;
  cin >> q;
  while (q--) {
    memset(cnt, 0, sizeof(cnt));
    long long n, t = 0, ps = 0, ans = 1, mini = 1;
    cin >> n;
    for (int i = 2; n; i++) cnt[n % i]++, n /= i, t++;
    t++;
    for (int i = N; i > 0; i--) {
      if (cnt[i] > 0) {
        ans *= ch(cnt[i], t - i - ps);
        ps += cnt[i];
      }
    }
    ps = 0;
    t--;
    if (cnt[0] > 0) {
      for (int i = N; i > 0; i--) {
        if (cnt[i] > 0) {
          if (t - i - ps < cnt[i]) {
            mini = 0;
            break;
          }
          mini *= ch(cnt[i], t - i - ps);
          ps += cnt[i];
        }
      }
    } else
      mini = 0;
    cout << ans - mini - 1 << endl;
  }
  return 0;
}
