#include #define inf 0x3f3f3f3f #define MOD 1000000007 #define inv2 500000004 #define last last2 using namespace std; typedef long long ll; typedef double db; const int Maxn=1000000; int prime[Maxn+5],mu[Maxn+5]; bool check[Maxn+5]; void pre() { mu[1]=1; int tot=0; for(int i=2;i<=Maxn;i++) { if (!check[i]) { prime[++tot]=i; mu[i]=MOD-1; } for(int j=1;j<=tot&&i*prime[j]<=Maxn;j++) { check[i*prime[j]]=1; if (i%prime[j]==0) break; mu[i*prime[j]]=(MOD-mu[i])%MOD; } } } inline ll S(ll n) { n%=MOD; return n*(n+1)%MOD*inv2%MOD; } ll calc(ll n) { ll ans=0; for(ll i=1,last=1;i<=n;i=last+1) { last=n/(n/i); ans=(ans+(n/i)%MOD*(S(last)-S(i-1)+MOD))%MOD; } return ans; } int main() { pre(); int cases; scanf("%d",&cases); for(;cases;cases--) { ll n; scanf("%lld",&n); ll ans=0; for(ll i=1;i*i<=n;i++) if (mu[i]) ans=(ans+mu[i]*i%MOD*calc(n/(i*i)))%MOD; printf("%lld\n",ans); } return 0; }