staticconstint HASH = 23456789; int numr, h[HASH]; structRecord { int n, v, nxt; } r[HASH];
voidadd_rec(int n, int v){ r[++ numr] = (Record) { n, v, h[n % HASH] }, h[n % HASH] = numr; }
intget_f(int n){ if (n < N) return mui[n]; for (int i = h[n % HASH]; i; i = r[i].nxt) if (r[i].n == n) return r[i].v; int ret = 1; for (int i = 2, j; i <= n; i = j + 1) j = n / (n / i), ret -= (get_sum(j) - get_sum(i - 1)) * get_f(n / i); returnadd_rec(n, ret), ret; }
intget_g(int n){ if (n < M && g[n]) return g[n]; int ret = 0; for (int i = 1, j; i <= n; i = j + 1) j = n / (n / i), ret += (get_sum(j) - get_sum(i - 1)) * (n / i); return ret; }
intcalc(int n){ int ret = 0; for (int i = 1, j; i * i <= n; i = j + 1) j = sqrt(n / (n / i / i) + 0.01), ret += (get_f(j) - get_f(i - 1)) * get_g(n / i / i); return ret; }
signedmain(){ int T; scanf("%lld", &T), init(); for (int i = 1; i < M; ++ i) g[i] = get_g(i); for (int n; T --;) scanf("%lld", &n), printf("%llu\n", calc(n)); return0; }