#include <iostream>
#include <cstring>
#define M 1000000007
typedef long long int ll;
using namespace std;
void sieve(ll n, ll b[], ll &k)
{
ll a[n+1];
memset(a,1,sizeof(a));
a[0]=0;
a[1]=0;
for(ll i = 2;i <= n/2;i++)
{
for(ll j = 2;j <= n/i; j++)
a[i*j]=0;
}
for(ll i=1;i<=n;i++)
{
if(a[i])
{
b[k++]=i;
}
}
return ;
}
int main()
{
int t;
cin >> t;
while(t--)
{
ll n;
cin >> n;
ll b[200];
ll k = 0;
sieve(n,b,k);
ll ans = 1;
for(ll i = 0;i<k;i++)
{
ll x = n/b[i];
while(x)
{
ans = ((ans%M)*(b[i]%M))%M;
x = x/b[i];
}
}
cout << ans << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2RlZmluZSBNIDEwMDAwMDAwMDcKCnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHNpZXZlKGxsIG4sIGxsIGJbXSwgbGwgJmspCnsKICAgIGxsIGFbbisxXTsKICAgIG1lbXNldChhLDEsc2l6ZW9mKGEpKTsKCiAgICBhWzBdPTA7CiAgICBhWzFdPTA7CgogICAgZm9yKGxsIGkgPSAyO2kgPD0gbi8yO2krKykKICAgIHsKICAgICAgICBmb3IobGwgaiA9IDI7aiA8PSBuL2k7IGorKykKICAgICAgICAgICAgYVtpKmpdPTA7CiAgICB9CgogICAgZm9yKGxsIGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICBpZihhW2ldKQogICAgICAgIHsKICAgICAgICAgICAgYltrKytdPWk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiA7Cn0KCmludCBtYWluKCkKewogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlKHQtLSkKICAgIHsKICAgICAgICBsbCBuOwogICAgICAgIGNpbiA+PiBuOwoKICAgICAgICBsbCBiWzIwMF07CiAgICAgICAgbGwgayA9IDA7CgogICAgICAgIHNpZXZlKG4sYixrKTsKCiAgICAgICAgbGwgYW5zID0gMTsKCiAgICAgICAgZm9yKGxsIGkgPSAwO2k8aztpKyspCiAgICAgICAgewogICAgICAgICAgICBsbCB4ID0gbi9iW2ldOwogICAgICAgICAgICB3aGlsZSh4KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBhbnMgPSAoKGFucyVNKSooYltpXSVNKSklTTsKICAgICAgICAgICAgICAgIHggPSB4L2JbaV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGNvdXQgPDwgYW5zIDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=