#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod (ll) 1200000090
#define N 40000005
int lp[N+1];
vector<int > pr;
void solve(){
for (int i=2; i<=N; ++i) {
if (lp[i] == 0) {
lp[i] = i;
pr.push_back (i);
}
for (int j=0; j<(ll )pr.size() && pr[j]<=lp[i] && i*pr[j]<=N; ++j)
lp[i * pr[j]] = pr[j];
}
}
ll po(ll a,ll n){
ll res=a, ans=1;
while(n){
if(n%2) ans=ans*res%mod;
res=res*res%mod;
n/=2;
}
return ans;
}
ll aka(ll p, ll alpha){
if(alpha==0) return 1;
if(alpha==1) return (p+1)%mod;
if(alpha%2==1) return (p*aka(p,alpha-1)%mod+1)%mod;
if(alpha%2==0) return ((po(p,alpha/2)+1)*((aka(p,alpha/2)-1+mod)%mod)%mod+1)%mod;
}
ll f(ll n){
ll tmp,i=0,so_mu,res=1;
while(pr[i]<=n){
tmp=pr[i];
so_mu=0;
while(tmp<=n){
so_mu = so_mu+ (n/tmp);
tmp=tmp*pr[i];
}
res=res*aka(pr[i],so_mu*3)%mod;
//res=res*(so_mu+1)*(so_mu+2)/2%mod;
i++;
}
return res;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ll n,res,testcase;
solve();
cin>>testcase;
while(testcase--){
cin>>n;
if(n==0) break;
res=f(n);
cout<<res<<'\n';
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcgCiNkZWZpbmUgbW9kIChsbCkgMTIwMDAwMDA5MAojZGVmaW5lIE4gNDAwMDAwMDUKaW50ICBscFtOKzFdOwp2ZWN0b3I8aW50ID4gcHI7CnZvaWQgc29sdmUoKXsKZm9yIChpbnQgIGk9MjsgaTw9TjsgKytpKSB7CiAgICBpZiAobHBbaV0gPT0gMCkgewogICAgICAgIGxwW2ldID0gaTsKICAgICAgICBwci5wdXNoX2JhY2sgKGkpOwogICAgfQogICAgZm9yIChpbnQgIGo9MDsgajwobGwgKXByLnNpemUoKSAmJiBwcltqXTw9bHBbaV0gJiYgaSpwcltqXTw9TjsgKytqKQogICAgICAgIGxwW2kgKiBwcltqXV0gPSBwcltqXTsKfQp9CgpsbCAgcG8obGwgIGEsbGwgIG4pewogIGxsICByZXM9YSwgYW5zPTE7CiAgd2hpbGUobil7CiAgICBpZihuJTIpIGFucz1hbnMqcmVzJW1vZDsKICAgIHJlcz1yZXMqcmVzJW1vZDsKICAgIG4vPTI7CiAgfQogIHJldHVybiBhbnM7Cn0KbGwgIGFrYShsbCAgcCwgbGwgIGFscGhhKXsKICBpZihhbHBoYT09MCkgcmV0dXJuIDE7CiAgaWYoYWxwaGE9PTEpIHJldHVybiAocCsxKSVtb2Q7CiAgaWYoYWxwaGElMj09MSkgcmV0dXJuIChwKmFrYShwLGFscGhhLTEpJW1vZCsxKSVtb2Q7CiAgaWYoYWxwaGElMj09MCkgcmV0dXJuICgocG8ocCxhbHBoYS8yKSsxKSooKGFrYShwLGFscGhhLzIpLTErbW9kKSVtb2QpJW1vZCsxKSVtb2Q7Cn0KbGwgIGYobGwgIG4pewogIGxsICB0bXAsaT0wLHNvX211LHJlcz0xOwogIHdoaWxlKHByW2ldPD1uKXsKICAgIHRtcD1wcltpXTsKICAgIHNvX211PTA7CiAgICB3aGlsZSh0bXA8PW4pewogICAgICAgIHNvX211ID0gc29fbXUrIChuL3RtcCk7CiAgICAgICAgdG1wPXRtcCpwcltpXTsKICAgIH0KICAgIHJlcz1yZXMqYWthKHByW2ldLHNvX211KjMpJW1vZDsKICAgIC8vcmVzPXJlcyooc29fbXUrMSkqKHNvX211KzIpLzIlbW9kOwogICAgaSsrOwogIH0KICByZXR1cm4gcmVzOwp9CmludCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBsbCAgbixyZXMsdGVzdGNhc2U7CiAgICBzb2x2ZSgpOwogICAgY2luPj50ZXN0Y2FzZTsKICAgd2hpbGUodGVzdGNhc2UtLSl7CiAgICAgIGNpbj4+bjsKICAgICAgaWYobj09MCkgYnJlYWs7CiAgICAgIHJlcz1mKG4pOwogICAgICBjb3V0PDxyZXM8PCdcbic7CiAgIH0KfQ==