#include #define ll long long using namespace std; const int mod=1e9+7; ll K(ll x,ll y=mod-2){ ll t=1; for (;y;y>>=1,x=x*x%mod) if (y&1) t=t*x%mod; return t; } const int N=2e6; bool np[N+5]; int pri[N/10], tot; vectorHH[N/10]; void init(){ for (int i=2;i<=N;++i){ if (!np[i]){ pri[++tot]=i; for (int j=i+i;j<=N;j+=i) np[j]=1; } } for (int pos=1;pos<=tot;++pos){ ll p=pri[pos], en=1e12; vectorF, G; int sz=0; { ll t=1; while (t<=en/p) t*=p, ++sz; } if (sz<2) continue; F.resize(sz+1); G.resize(sz+1); for (int i=0;i<=sz;++i){ F[i]= i? (F[i-1]+K(p,i))%mod: 1; G[i]= i? (K(p,i)+1)%mod: 1; } swap(F,G); for (int i=0;i<=sz;++i){ ll h=F[i]; HH[pos].push_back(h); for (int j=0;i+j<=sz;++j) F[i+j]=(F[i+j]-G[j]*h%mod+mod)%mod; } } } ll T, n, ans; ll Si(ll x){ x%=mod; return x*(x+1)/2%mod; } unordered_mapsh; ll shit(ll n){ if (sh.count(n)) return sh[n]; ll res=0, pre=0; for (ll i=1;i<=n;++i){ ll nex=n/(n/i), p2=Si(nex); res+=(n/i%mod)*(p2-pre+mod)%mod; i=nex; pre=p2; } return sh[n]=res%mod; } ll ooooo=0; void dfs(ll now,ll H,int pos,int fl){ ++ooooo; if (fl){ //cerr<<' '<n/now) return; ll en=n/now; ll now2=now; for (int i=1;now2<=n/p;++i){ now2*=p; ll h=HH[pos][i]; if (i>=2){ dfs(now2,H*h%mod,pos+1,1); } } dfs(now,H,pos+1,0); } ll fuck(){ ans=0; dfs(1,1,1,1); return ans; } int main(){ init(); for (cin>>T;T--;){ cin>>n; cout<