#include using namespace std; const int maxn=1000005; const int mod=1e9+7; int T,cnt; long long n; int pri[maxn],mu[maxn]; bool no[maxn]; int main(){ no[1]=true;mu[1]=1; for(int i=2;i<=1000000;i++){ if(!no[i])pri[++cnt]=i,mu[i]=-1; for(int j=1;j<=cnt;j++){ if(i*pri[j]>1000000)break; no[i*pri[j]]=true; if(i%pri[j]==0){ mu[i*pri[j]]=0; break; } else mu[i*pri[j]]=-mu[i]; } } scanf("%d",&T); while(T--){ scanf("%lld",&n); int ans=0; for(long long d=1;d*d<=n;d++)if(mu[d]){ int coef=mu[d]==1?d:(mod-d),sum=0; long long m=n/d/d; for(long long l=1,r;l<=m;l=r+1){ r=m/(m/l); int vl=l%mod,vr=r%mod; sum=(sum+1LL*(vl+vr)*(vr+mod-vl+1)%mod*(mod+1)/2%mod*(m/l))%mod; } ans=(ans+1LL*coef*sum)%mod; } printf("%d\n",ans); } return 0; }