#import resource
import sys
#resource.setrlimit(resource.RLIMIT_STACK, [0x100000000, resource.RLIM_INFINITY])
#import threading
#threading.Thread(target=main).start()
#threading.stack_size(2**26)
#sys.setrecursionlimit(10**6)
mod=(10**9)+7
#fact=[1]
#for i in range(1,100001):
# fact.append((fact[-1]*i)%mod)
#ifact=[0]*100001
#ifact[100000]=pow(fact[100000],mod-2,mod)
#for i in range(100000,0,-1):
# ifact[i-1]=(i*ifact[i])%mod
from sys import stdin, stdout
import bisect
from bisect import bisect_left as bl
from bisect import bisect_right as br
import itertools
import collections
import math
import heapq
#from random import randint as rn
#from Queue import Queue as Q
def modinv(n,p):
return pow(n,p-2,p)
def ncr(n,r,p):
t=((fact[n])*((ifact[r]*ifact[n-r])%p))%p
return t
def ain():
return map(int,sin().split())
def sin():
return stdin.readline().strip()
def GCD(x,y):
while(y):
x, y = y, x % y
return x
def isprime(x):
if(x==1):
return False
elif(x<4):
return True
for i in range(2,int(math.sqrt(x))+1):
if(x%i==0):
return False
return True
"""**************************************************************************"""
w=[0]*1000001
p=[]
for i in range(2,1000001):
if(w[i]==0):
p.append(i)
for i in range(i+i,1000001,i):
w[i]=1
ans=[]
for _ in range(int(sin())):
n=int(sin())
if(n%mod==0):
print 1/0
n1=n
i=0
d={}
while(i<len(p) and n!=1):
if(n%p[i]==0):
d[p[i]]=0
while(n%p[i]==0):
n/=p[i]
d[p[i]]+=1
i+=1
if(n!=1):
d[n]=1
di=[]
for i in d:
di.append([i,d[i]])
prod=n1
for i,j in di:
prod/=i
prod*=(((i-1)*j)+i)
prod%=mod
n1%=mod
prod=(prod*modinv(n1,mod))%mod
ans.append(str(prod))
stdout.write("\n".join(ans))
I2ltcG9ydCByZXNvdXJjZQppbXBvcnQgc3lzCiNyZXNvdXJjZS5zZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLLCBbMHgxMDAwMDAwMDAsIHJlc291cmNlLlJMSU1fSU5GSU5JVFldKQojaW1wb3J0IHRocmVhZGluZwojdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bWFpbikuc3RhcnQoKQojdGhyZWFkaW5nLnN0YWNrX3NpemUoMioqMjYpCiNzeXMuc2V0cmVjdXJzaW9ubGltaXQoMTAqKjYpCm1vZD0oMTAqKjkpKzcKI2ZhY3Q9WzFdCiNmb3IgaSBpbiByYW5nZSgxLDEwMDAwMSk6CiMgICAgZmFjdC5hcHBlbmQoKGZhY3RbLTFdKmkpJW1vZCkKI2lmYWN0PVswXSoxMDAwMDEKI2lmYWN0WzEwMDAwMF09cG93KGZhY3RbMTAwMDAwXSxtb2QtMixtb2QpCiNmb3IgaSBpbiByYW5nZSgxMDAwMDAsMCwtMSk6CiMgICAgaWZhY3RbaS0xXT0oaSppZmFjdFtpXSklbW9kCmZyb20gc3lzIGltcG9ydCBzdGRpbiwgc3Rkb3V0CmltcG9ydCBiaXNlY3QKZnJvbSBiaXNlY3QgaW1wb3J0IGJpc2VjdF9sZWZ0IGFzIGJsCmZyb20gYmlzZWN0IGltcG9ydCBiaXNlY3RfcmlnaHQgYXMgYnIKaW1wb3J0IGl0ZXJ0b29scwppbXBvcnQgY29sbGVjdGlvbnMKaW1wb3J0IG1hdGgKaW1wb3J0IGhlYXBxCiNmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZGludCBhcyBybgojZnJvbSBRdWV1ZSBpbXBvcnQgUXVldWUgYXMgUQpkZWYgbW9kaW52KG4scCk6CiAgICByZXR1cm4gcG93KG4scC0yLHApCmRlZiBuY3IobixyLHApOgogICAgdD0oKGZhY3Rbbl0pKigoaWZhY3Rbcl0qaWZhY3Rbbi1yXSklcCkpJXAKICAgIHJldHVybiB0CmRlZiBhaW4oKToKICAgIHJldHVybiBtYXAoaW50LHNpbigpLnNwbGl0KCkpCmRlZiBzaW4oKToKICAgIHJldHVybiBzdGRpbi5yZWFkbGluZSgpLnN0cmlwKCkKZGVmIEdDRCh4LHkpOgogICAgd2hpbGUoeSk6CiAgICAgICAgeCwgeSA9IHksIHggJSB5CiAgICByZXR1cm4geApkZWYgaXNwcmltZSh4KToKICAgIGlmKHg9PTEpOgogICAgICAgIHJldHVybiBGYWxzZQogICAgZWxpZih4PDQpOgogICAgICAgIHJldHVybiBUcnVlCiAgICBmb3IgaSBpbiByYW5nZSgyLGludChtYXRoLnNxcnQoeCkpKzEpOgogICAgICAgIGlmKHglaT09MCk6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgcmV0dXJuIFRydWUKIiIiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiIiIKdz1bMF0qMTAwMDAwMQpwPVtdCmZvciBpIGluIHJhbmdlKDIsMTAwMDAwMSk6CiAgICBpZih3W2ldPT0wKToKICAgICAgICBwLmFwcGVuZChpKQogICAgICAgIGZvciBpIGluIHJhbmdlKGkraSwxMDAwMDAxLGkpOgogICAgICAgICAgICB3W2ldPTEKYW5zPVtdCmZvciBfIGluIHJhbmdlKGludChzaW4oKSkpOgogICAgbj1pbnQoc2luKCkpCiAgICBpZihuJW1vZD09MCk6CiAgICAgICAgcHJpbnQgMS8wCiAgICBuMT1uCiAgICBpPTAKICAgIGQ9e30KICAgIHdoaWxlKGk8bGVuKHApIGFuZCBuIT0xKToKICAgICAgICBpZihuJXBbaV09PTApOgogICAgICAgICAgICBkW3BbaV1dPTAKICAgICAgICAgICAgd2hpbGUobiVwW2ldPT0wKToKICAgICAgICAgICAgICAgIG4vPXBbaV0KICAgICAgICAgICAgICAgIGRbcFtpXV0rPTEKICAgICAgICBpKz0xCiAgICBpZihuIT0xKToKICAgICAgICBkW25dPTEKICAgIGRpPVtdCiAgICBmb3IgaSBpbiBkOgogICAgICAgIGRpLmFwcGVuZChbaSxkW2ldXSkKICAgIHByb2Q9bjEKICAgIGZvciBpLGogaW4gZGk6CiAgICAgICAgcHJvZC89aQogICAgICAgIHByb2QqPSgoKGktMSkqaikraSkKICAgIHByb2QlPW1vZAogICAgbjElPW1vZAogICAgcHJvZD0ocHJvZCptb2RpbnYobjEsbW9kKSklbW9kCiAgICBhbnMuYXBwZW5kKHN0cihwcm9kKSkKc3Rkb3V0LndyaXRlKCJcbiIuam9pbihhbnMpKQ==