#include<bits/stdc++.h> using namespace std; #define ll long long const int M = 1e9+7; const int MOD = 1e9+7; #define READ(f) freopen(f, "r", stdin) #define WRITE(f) freopen(f, "w", stdout) ll power(ll a,ll b) { ll res=1; if(a==1)return 1; for(;b>0;b>>=1) { if(b&1)res=(res*a); if(res>MOD)res%=MOD; a=(a*a); if(a>MOD)a=a%MOD; } return res; } // x <= 10^5 ll sumPow4(ll x) { ll ans = (x*(x+1))%M; ans=(ans*(2ll*x+1ll))%M; ll tmp = ((3ll*x*x)%M+3ll*x-1)%M; ans=(ans*tmp)%M; ans=(ans*power(30,M-2))%M; return ans; } ll sumPow2(ll x) { ll ans = (x*(x+1))%M; ans=(ans*(2ll*x+1))%M; ans=(ans*power(6,M-2))%M; return ans; } ll getNearest(ll n) { ll ans = sqrt(1+8*n); ans--; ans/=2; return ans; } int main() { //READ("8.in"); //WRITE("8.out"); int t;cin>>t; assert(t<=100000 and t>=1); while(t--) { ll n; cin>>n; assert(n<=1000000000 and n>=1); ll x=getNearest(n); ll patternSum = sumPow4(x)-sumPow2(x); patternSum = (patternSum%M+M)%M; patternSum = (patternSum*power(6,M-2))%M; ll r = n - (x*(x+1))/2; // 1*x + 2*(x-1) + ... ll extra = (x*(x+1))%M; extra=(extra*(x+2))%M; extra=(extra*r)%M; extra=(extra*power(6,M-2))%M; ll ans = (patternSum+extra)%M; // ll res=0,i=1,diff=2; // // while(i<=n){ // res+=(i*(n-i))%M; // res%=M; // i+=diff; // diff++; // } // cout<<res<<' '; cout<<ans<<endl; //assert(res==ans); } }