typedefunsignedlonglong ll; constint maxn = 1e7 + 10; int n, t, cnt; ll mu[maxn]; int p[maxn]; bool vis[maxn];
inlinevoidinit() { mu[1] = 1; for (int i = 2; i < maxn; ++i) { if (!vis[i]) p[++cnt] = i, mu[i] = -1; for (int j = 1; j <= cnt && i * p[j] < maxn; ++j) { vis[i * p[j]] = 1; if (i % p[j]) mu[i * p[j]] = -mu[i]; elsebreak; } }
for (int i = 1; i < maxn; ++i) mu[i] += mu[i - 1]; }
inlineintmin(int x, int y) { if (x < y) return x; return y; }
ll solve(int n, int m) { ll sum(0); if (n > m) swap(n, m); for (int l = 1, r; l <= n; l = r + 1) { r = min(n / (n / l), m / (m / l)); sum += (mu[r] - mu[l - 1]) * (n / l) * (m / l); } return sum; }
ll gc(int n, int m) { if (m == 1) return0; if (n == 1) return m / 2; ll total = solve(n, m / 2), cut = gc(m / 2, n); return total - cut; }
ull MMu(ll x) { if (x <= maxn) return mu[x]; if (Mu[x]) return Mu[x]; ll Ans(1); for (ll l(2), r; l <= x; l = r + 1) { r = x / (x / l); Ans -= (r - l + 1) * MMu(x / l); } return Mu[x] = Ans; }
ull solve(ll n, ll m) { ull sum(0); if (n > m) swap(n, m); for (ll l = 1, r; l <= n; l = r + 1) { r = min(n / (n / l), m / (m / l)); sum += (MMu(r) - MMu(l - 1)) * (n / l) * (m / l); } return sum; }
ull gc(ll n, ll m) { if (m == 1) return n / 2; if (n == 1) return0; ull total = solve(n / 2, m), cut = gc(m, n / 2); return total - cut; }
inline ll __read() { ll x(0), t(1); charo(getchar()); while (o < '0' || o > '9') { if (o == '-') t = -1; o = getchar(); } for (; o >= '0' && o <= '9'; o = getchar()) { x = (x << 1) + (x << 3) + (o ^ 48); } return x * t; }
intmain() { init(); t = __read(); while (t--) { n = __read(); ull ans = gc(n, n) * 2; printf ("%llu\n", ans); } }