#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);
}
}