#include <algorithm>
#include <cmath>
#include <iostream>
#include <map>
#include <queue>
#include <vector>
using namespace std;
void solve() {
long long n;
cin >> n;
if (n <= 2) {
cout << 0 << "\n";
return;
}
long long ans = 0;
int digits[64];
long long S = sqrt(n);
while ((S + 1) * (S + 1) <= n)
S++;
while (S * S > n)
S--;
long long limit_b = min(n - 1, S);
for (long long b = 2; b <= limit_b; b++) {
long long temp = n;
int len = 0;
while (temp > 0) {
digits[len++] = temp % b;
temp /= b;
}
for (int p = 2; p <= len; p++) {
if (len % p != 0)
continue;
bool ok = true;
int chunk = len / p;
for (int i = 0; i < chunk; i++) {
int base_digit = digits[i * p];
for (int j = 1; j < p; j++) {
if (digits[i * p + j] != base_digit) {
ok = false;
break;
}
}
if (!ok)
break;
}
if (ok)
ans++;
}
}
long long limit_d = min(n - 1, S);
for (long long d = 1; d <= limit_d; d++) {
if (n % d == 0) {
long long b = (n / d) - 1;
if (b > limit_b && b >= 2) {
if (d < b) {
ans++;
}
}
}
}
cout << ans << "\n";
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}