#include<bits/stdc++.h> using namespace std; const int N=1e6+6; const int mod=1e9+7; const int inv3=333333336; typedef long long ll; int prime[N],mu[N],h[N],tot=0; bool vis[N]={0}; int F(ll n){return (n-1)*(n-2)%mod;} void pre(){ mu[1]=1;mu[0]=0; for(int i=2;i<N;i++){ if(!vis[i])prime[++tot]=i,mu[i]=-1; for(int j=1;j<=tot&&i*prime[j]<N;j++){ vis[i*prime[j]]=1; if(i%prime[j]==0){ mu[i*prime[j]]=0;break; }else mu[i*prime[j]]=-mu[i]; } } for(int i=1;i<N;i++){ for(int j=i;j<N;j+=i){ h[j]+=F(i)*mu[j/i]; h[j]=(1LL*h[j]+mod)%mod; } } for(int i=1;i<N;i++)h[i]=(1LL*h[i]+h[i-1])%mod; } map<int,int>p; map<int,bool>q; int cal(int n){ if(n<N)return h[n]; if(q[n])return p[n]; int ans=1LL*n*(n-1)%mod*(n-2)%mod*inv3%mod; for(int i=2,last;i<=n;i=last+1){ last=n/(n/i); ans-=1LL*(last-i+1)*cal(n/i)%mod; ans=(ans+mod)%mod; } q[n]=true; return p[n]=ans; } int main(){ pre(); int t;cin>>t; while(t--){ int n; scanf("%d",&n); printf("%d\n",cal(n)); } }