#include <bits/stdc++.h>
using namespace std;
#define lli long long
#define DEBUG(x) cout<<">value ("<<#x<<") : "<<x<<endl;
#define mod 1000000007
#define pb push_back
const int limit = 100005;
vector<bool> prime(limit,true);
vector<int> primes;
void seive(){
for(int i=2;i<limit;i++){
if(prime[i]){
primes.pb(i);
for(int j=i;j<limit;j+=i){
prime[j]=false;
}
}
}
return;
}
int get(int n,int p){
int ans = 0;
lli cur = (long long)p;
while(true){
int temp = n/cur;
if(temp==0) break;
ans += temp;
cur *= (long long)p;
}
return ans;
}
int main() {
int t,n;
seive();
scanf("%d",&t);
while(t--){
scanf("%d",&n);
lli ans = 1;
for(int i=0;i<primes.size();i++){
int loc = get(n,primes[i]);
loc++;
ans = ( (ans%mod)*((long long)loc%mod))%mod;
}
printf("%lld\n",ans);
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsaSBsb25nIGxvbmcKI2RlZmluZSBERUJVRyh4KSBjb3V0PDwiPnZhbHVlICgiPDwjeDw8IikgOiAiPDx4PDxlbmRsOwojZGVmaW5lIG1vZCAxMDAwMDAwMDA3CiNkZWZpbmUgcGIgcHVzaF9iYWNrCgpjb25zdCBpbnQgbGltaXQgPSAxMDAwMDU7Cgp2ZWN0b3I8Ym9vbD4gcHJpbWUobGltaXQsdHJ1ZSk7CnZlY3RvcjxpbnQ+IHByaW1lczsKdm9pZCBzZWl2ZSgpewoJZm9yKGludCBpPTI7aTxsaW1pdDtpKyspewoJCWlmKHByaW1lW2ldKXsKICAgICAgICAgICAgcHJpbWVzLnBiKGkpOwoJCQlmb3IoaW50IGo9aTtqPGxpbWl0O2orPWkpewoJCQkJcHJpbWVbal09ZmFsc2U7CiAgICAgICAgICAgIH0KCQl9Cgl9CglyZXR1cm47Cn0KCmludCBnZXQoaW50IG4saW50IHApewogICAgaW50IGFucyAgPSAwOwogICAgbGxpIGN1ciA9IChsb25nIGxvbmcpcDsKICAgIHdoaWxlKHRydWUpewogICAgICAgIGludCB0ZW1wID0gbi9jdXI7CiAgICAgICAgaWYodGVtcD09MCkgYnJlYWs7CiAgICAgICAgYW5zICs9IHRlbXA7CiAgICAgICAgY3VyICo9IChsb25nIGxvbmcpcDsKICAgIH0KICAgIHJldHVybiBhbnM7Cn0KCmludCBtYWluKCkgewogICAgaW50IHQsbjsKICAgIHNlaXZlKCk7CiAgICBzY2FuZigiJWQiLCZ0KTsKICAgIHdoaWxlKHQtLSl7CiAgICAgICBzY2FuZigiJWQiLCZuKTsKICAgICAgIGxsaSBhbnMgPSAxOwogICAgICAgZm9yKGludCBpPTA7aTxwcmltZXMuc2l6ZSgpO2krKyl7CiAgICAgICAgICAgIGludCBsb2MgPSBnZXQobixwcmltZXNbaV0pOwogICAgICAgICAgICBsb2MrKzsKICAgICAgICAgICAgYW5zID0gKCAoYW5zJW1vZCkqKChsb25nIGxvbmcpbG9jJW1vZCkpJW1vZDsKICAgICAgIH0KICAgICAgIHByaW50ZigiJWxsZFxuIixhbnMpOwogICAgfQp9Cgo=