from heapq import heappush,heappop from functools import lru_cache import math from math import gcd N=10**7+100 K=N if N<10 else int((N/math.log(math.log(N)))**(2/3)) phi=[i for i in range(K+1)] isPrime=[True for i in range(K+1)] isPrime[0]=False;isPrime[1]=False for i in range(K+1): if isPrime[i]: for j in range(2*i,K+1,i): isPrime[j]=False for j in range(i,K+1,i): phi[j]-=phi[j]//i Phi=[0 for i in range(K+1)] for i in range(1,K+1): Phi[i]=Phi[i-1]+phi[i] @lru_cache(maxsize=10**8) def solve(n): tmp=n-1 if n<=K: return Phi[n] ans=(n*(n+1))//2 k=1 while(n//k>n//(k+1)): tmp-=(n//k)-n//(k+1) ans-=((n//k)-(n//(k+1)))*solve(k) k+=1 i=2 while(tmp>0): tmp-=1 ans-=solve(n//i) i+=1 return ans #[0, 1, -1, -1, 0, -1, 1, -1, 0, 0, 1, -1, 0, -1, 1, 1, 0, -1, 0, -1] def solve_naive(N): INF=10**18 ans=0 for st in range(1,N+1): dist=[INF for i in range(N+1)] dist[st]=0 q=[] heappush(q,(0,st)) while(q): nowdis,v=heappop(q) if dist[v]dist[v]+w: dist[u]=dist[v]+w heappush(q,(dist[u],u)) for i in range(1,N+1): ans+=dist[i] #print(dist[1:]) return ans//2 def solve_ans(N): res=solve(N)*2-1 ans=(2*N*N-res) ans-=2*N-1 ans//=2 return ans #for n in range(1,10): # print(n,solve_naive(n),solve_ans(n)) #exit() T=int(input()) for _ in range(T): n=int(input()) print(solve_ans(n)) ''' iとjが互いに素なら1そうじゃないなら2 '''