#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
#define BIT(n) ((1ll) << (n))
#define bit(mask, i) (((mask) >> (i)) & 1)
using namespace std;
const int MOD = 1e9 + 7;
int t, n, m;
ll binpow(ll a, ll b)
{
ll ans = 1;
for (; b; b >>= 1, (a *= a) %= MOD)
if (b & 1)
(ans *= a) %= MOD;
return ans;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("COUNTSEQ.INP", "r"))
{
freopen("COUNTSEQ.INP", "r", stdin);
freopen("COUNTSEQ.OUT", "w", stdout);
}
cin >> t;
while (t--)
{
ll ans = 0;
vector<int> p;
cin >> n;
m = n;
for (ll i = 2; i * i <= n; i++)
{
bool flag = 0;
while (m % i == 0)
{
m /= i;
flag = 1;
}
if (flag)
p.push_back(i);
}
if (m > 1)
p.push_back(m);
for (int mask = 0; mask < BIT(p.size()); mask++)
{
ll mul = 1;
for (int i = 0; i < p.size(); i++)
if (bit(mask, i))
mul *= p[i];
if (__builtin_popcount(mask) & 1)
(ans -= binpow(2, n/mul - 1)) %= MOD;
else
(ans += binpow(2, n/mul - 1)) %= MOD;
}
cout << (ans + MOD) % MOD, el;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSBlbCBjb3V0IDw8ICdcbicKI2RlZmluZSBCSVQobikgKCgxbGwpIDw8IChuKSkKI2RlZmluZSBiaXQobWFzaywgaSkgKCgobWFzaykgPj4gKGkpKSAmIDEpCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CgppbnQgdCwgbiwgbTsKCmxsIGJpbnBvdyhsbCBhLCBsbCBiKQp7CiAgICBsbCBhbnMgPSAxOwogICAgZm9yICg7IGI7IGIgPj49IDEsIChhICo9IGEpICU9IE1PRCkKICAgICAgICBpZiAoYiAmIDEpCiAgICAgICAgICAgIChhbnMgKj0gYSkgJT0gTU9EOwogICAgcmV0dXJuIGFuczsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGlmIChmb3BlbigiQ09VTlRTRVEuSU5QIiwgInIiKSkKICAgIHsKICAgICAgICBmcmVvcGVuKCJDT1VOVFNFUS5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJDT1VOVFNFUS5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICB9CgogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKQogICAgewogICAgICAgIGxsIGFucyA9IDA7CiAgICAgICAgdmVjdG9yPGludD4gcDsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICBtID0gbjsKICAgICAgICBmb3IgKGxsIGkgPSAyOyBpICogaSA8PSBuOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBib29sIGZsYWcgPSAwOwogICAgICAgICAgICB3aGlsZSAobSAlIGkgPT0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbSAvPSBpOwogICAgICAgICAgICAgICAgZmxhZyA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGZsYWcpCiAgICAgICAgICAgICAgICBwLnB1c2hfYmFjayhpKTsKICAgICAgICB9CiAgICAgICAgaWYgKG0gPiAxKQogICAgICAgICAgICBwLnB1c2hfYmFjayhtKTsKICAgICAgICBmb3IgKGludCBtYXNrID0gMDsgbWFzayA8IEJJVChwLnNpemUoKSk7IG1hc2srKykKICAgICAgICB7CiAgICAgICAgICAgIGxsIG11bCA9IDE7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcC5zaXplKCk7IGkrKykKICAgICAgICAgICAgICAgIGlmIChiaXQobWFzaywgaSkpCiAgICAgICAgICAgICAgICAgICAgbXVsICo9IHBbaV07CiAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fcG9wY291bnQobWFzaykgJiAxKQogICAgICAgICAgICAgICAgKGFucyAtPSBiaW5wb3coMiwgbi9tdWwgLSAxKSkgJT0gTU9EOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAoYW5zICs9IGJpbnBvdygyLCBuL211bCAtIDEpKSAlPSBNT0Q7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgKGFucyArIE1PRCkgJSBNT0QsIGVsOwogICAgfQp9