#include using namespace std; typedef long long ll; const ll p = 1e9 + 7; int prim[1010000], mu[1010000], op = 0, vis[1010000]; void init() { mu[1] = 1; for(int i = 2; i <= 1000000; i++) { if(!vis[i]) prim[++op] = i, mu[i] = -1; for(int j = 1; j <= op && i * prim[j] <= 1000000; j++) { vis[i * prim[j]] = 1; if(i % prim[j] == 0) break; mu[i * prim[j]] = -mu[i]; } } } int main() { init(); ll inv2 = 500000004; int t; scanf("%d", &t); while(t--) { ll ans = 0, n; scanf("%lld", &n); for(ll i = 1; i * i <= n; i++) { ll now = mu[i] * i; ll sum = n / i / i; ll x = 0; for(ll j = 1; j <= sum; ) { ll k = sum / (sum / j); // ll k = j; x += (k - j + 1) % p * ( (k + j) % p * inv2 % p) % p * ((sum / j) % p) % p; x %= p; j = k + 1; // cout << k << " " << j << " " << n / i << " " << sum << endl; } // cout << "??" << endl; ans += x%p * now % p; ans %= p; } cout << (ans+p)%p << endl; } }