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