#include #include #include #include #include #include #include #include #include using namespace std; #define rep(i,a,n) for (int i=a;i=a;i--) #define pb push_back #define mp make_pair #define all(x) (x).begin(),(x).end() #define fi first #define se second #define SZ(x) ((int)(x).size()) typedef vector VI; typedef long long ll; typedef pair PII; const ll mod=1000000007; ll powmod(ll a,ll b) {ll res=1;a%=mod;for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;} // head ll inv3=powmod(3,mod-2); const int N=1000000; int n,_; ll f[N+10],s[N+10]; map hs; ll S(ll x) { if (x<=N) return s[x]; if (hs.count(x)) return hs[x]; ll ret=x*(x-1)%mod*(x-2)%mod*inv3%mod; for (ll i=2;i<=x;i++) { ll r=x/(x/i); ret=(ret-S(x/i)*(r-i+1))%mod; i=r; } return hs[x]=ret; } int main() { rep(i,1,N+1) f[i]=(i-1ll)*(i-2ll)%mod; rep(i,1,N+1) { f[i]%=mod; for (int j=i+i;j<=N;j+=i) f[j]-=f[i]; } rep(i,1,N+1) s[i]=(s[i-1]+f[i])%mod; for (scanf("%d",&_);_;_--) { scanf("%d",&n); int ret=S(n); if (ret<0) ret+=mod; printf("%d\n",ret); } }