#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define nl '\n'
#define mod 1000000007
#define fori(i,n) for(ll i=0;i < n;i++)
#define forn(i,n) for(ll i=1;i <= n;i++)
#define forx(i,x,n) for(ll i=x;i < n;i++)
#define sortx(x) sort(x.begin(),x.end())
#define sorty(x) sort(x.begin(),x.end(),greater<>())
using namespace std;
/*#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
template<typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
using namespace __gnu_pbds;
#define ordered_multiset tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update>
ll Mod(ll base, ll exp, ll MOD){
if(exp == 0) return 1;
ll res = Mod(base,exp/2,MOD);
if(exp % 2)
return (((res * res) % MOD)*base) % MOD;
else
return (res*res) % MOD;
}*/
ll gcd(ll x,ll y){
ll b = min(x,y);
ll a = max(x,y);
while(b != 0){
ll temp = b;
b = a % b;
a = temp;
}
return a;
}
/*ll div(vector<ll> &x){
for(ll i=1;i <= 1000007;i++){
for(ll j=i;j <= 1000007;j+=i){
x[j]++;
}
}
}
bool prime(ll n){
int c=0;
for(ll i=1;i <= n;i++){
if(n % i == 0) c++;
if(c > 2) break;
}
if(c == 2) return true;
return false;
}*/
ll ways(ll n){
ll count = 0;
for(ll i=2;i <= n;i++){
for(ll j=i;j <= n;j++){
if(gcd(i,j) > 1) count++;
}
}
return count;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while(t--){
ll n;
cin >> n;
cout << ways(n) << nl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgbmwgJ1xuJwojZGVmaW5lIG1vZCAxMDAwMDAwMDA3CiNkZWZpbmUgZm9yaShpLG4pIGZvcihsbCBpPTA7aSA8IG47aSsrKQojZGVmaW5lIGZvcm4oaSxuKSBmb3IobGwgaT0xO2kgPD0gbjtpKyspCiNkZWZpbmUgZm9yeChpLHgsbikgZm9yKGxsIGk9eDtpIDwgbjtpKyspCiNkZWZpbmUgc29ydHgoeCkgc29ydCh4LmJlZ2luKCkseC5lbmQoKSkKI2RlZmluZSBzb3J0eSh4KSBzb3J0KHguYmVnaW4oKSx4LmVuZCgpLGdyZWF0ZXI8PigpKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwovKiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp1c2luZyBvcmRlcmVkX3NldCA9IHRyZWU8VCwgbnVsbF90eXBlLCBsZXNzPFQ+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPjsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiNkZWZpbmUgb3JkZXJlZF9tdWx0aXNldCB0cmVlPGludCwgbnVsbF90eXBlLCBsZXNzX2VxdWFsPGludD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+CgpsbCBNb2QobGwgYmFzZSwgbGwgZXhwLCBsbCBNT0QpewogICAgaWYoZXhwID09IDApIHJldHVybiAxOwogICAgbGwgcmVzID0gTW9kKGJhc2UsZXhwLzIsTU9EKTsKICAgIGlmKGV4cCAlIDIpIAogICAgICByZXR1cm4gKCgocmVzICogcmVzKSAlIE1PRCkqYmFzZSkgJSBNT0Q7CiAgICBlbHNlCiAgICAgIHJldHVybiAocmVzKnJlcykgJSBNT0Q7Cn0qLwoKbGwgZ2NkKGxsIHgsbGwgeSl7CiAgbGwgYiA9IG1pbih4LHkpOwogIGxsIGEgPSBtYXgoeCx5KTsKICB3aGlsZShiICE9IDApewogICAgbGwgdGVtcCA9IGI7CiAgICBiID0gYSAlIGI7CiAgICBhID0gdGVtcDsKICB9CiAgcmV0dXJuIGE7Cn0KCi8qbGwgZGl2KHZlY3RvcjxsbD4gJngpewogIGZvcihsbCBpPTE7aSA8PSAxMDAwMDA3O2krKyl7CiAgICBmb3IobGwgaj1pO2ogPD0gMTAwMDAwNztqKz1pKXsKICAgICAgeFtqXSsrOwogICAgfQogIH0KfQoKYm9vbCBwcmltZShsbCBuKXsKICBpbnQgYz0wOwogIGZvcihsbCBpPTE7aSA8PSBuO2krKyl7CiAgICBpZihuICUgaSA9PSAwKSBjKys7CiAgICBpZihjID4gMikgYnJlYWs7CiAgfQogIGlmKGMgPT0gMikgcmV0dXJuIHRydWU7CiAgcmV0dXJuIGZhbHNlOwp9Ki8KCmxsIHdheXMobGwgbil7CiAgbGwgY291bnQgPSAwOwogIGZvcihsbCBpPTI7aSA8PSBuO2krKyl7CiAgICBmb3IobGwgaj1pO2ogPD0gbjtqKyspewogICAgICBpZihnY2QoaSxqKSA+IDEpIGNvdW50Kys7CiAgICB9CiAgfQogIHJldHVybiBjb3VudDsKfQoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlKHQtLSl7CiAgICAgIGxsIG47CiAgICAgIGNpbiA+PiBuOwogICAgICBjb3V0IDw8IHdheXMobikgPDwgbmw7CiAgICB9Cn0K