#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define vt vector<ll>
#define vvt vector<vt>
#define all(a) a.begin(), a.end()
#define pb push_back
void print(vt &a){
for(auto val: a)
cout<<val<<" ";
cout<<endl;
}
void read(vt &a){
for(int i=0;i<a.size();i++)
cin>>a[i];
}
ll f(ll a, ll b, ll n){
return ((n-a)/b)+ 1;
}
void solve(){
ll n;
cin>>n;
ll ans = 0;
unordered_map<ll,ll>count;
for(ll w=1;w<=n;w++){
for(ll x=1;x<=n;x++){
ll num=w;
ll den=x;
num%=den;
if(num==0){
count[0]++;
continue;
}
ll g=__gcd(num, den);
num/=g;
den/=g;
count[num + (n+1)*den]++;
}
}
for(auto val: count){
ll a = val.first%(n+1);
ll b = val.first/(n+1);
a = b-a;
ans += val.second * (count[a + (n+1)*b]);
}
cout<<ans<<endl;
}
int main() {
// your code goes here
ll t;
cin>>t;
while(t--){
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgdnQgdmVjdG9yPGxsPgojZGVmaW5lIHZ2dCB2ZWN0b3I8dnQ+CiNkZWZpbmUgYWxsKGEpIGEuYmVnaW4oKSwgYS5lbmQoKQojZGVmaW5lIHBiIHB1c2hfYmFjawoKdm9pZCBwcmludCh2dCAmYSl7Cglmb3IoYXV0byB2YWw6IGEpCgkJY291dDw8dmFsPDwiICI7Cgljb3V0PDxlbmRsOwp9Cgp2b2lkIHJlYWQodnQgJmEpewoJZm9yKGludCBpPTA7aTxhLnNpemUoKTtpKyspCgkJY2luPj5hW2ldOwp9CmxsIGYobGwgYSwgbGwgYiwgbGwgbil7CglyZXR1cm4gKChuLWEpL2IpKyAxOwp9CnZvaWQgc29sdmUoKXsKCWxsIG47CgljaW4+Pm47CglsbCBhbnMgPSAwOwoKCXVub3JkZXJlZF9tYXA8bGwsbGw+Y291bnQ7Cglmb3IobGwgdz0xO3c8PW47dysrKXsKCQlmb3IobGwgeD0xO3g8PW47eCsrKXsKCQkJbGwgbnVtPXc7CgkJCWxsIGRlbj14OwoJCQludW0lPWRlbjsKCQkJaWYobnVtPT0wKXsKCQkJCWNvdW50WzBdKys7CgkJCQljb250aW51ZTsKCQkJfQoJCQlsbCBnPV9fZ2NkKG51bSwgZGVuKTsKCQkJbnVtLz1nOwoJCQlkZW4vPWc7CgkJCWNvdW50W251bSArIChuKzEpKmRlbl0rKzsKCQkJCgkJfQoJfQoJCiAgICBmb3IoYXV0byB2YWw6IGNvdW50KXsKICAgIAlsbCBhID0gdmFsLmZpcnN0JShuKzEpOwogICAgCWxsIGIgPSB2YWwuZmlyc3QvKG4rMSk7CiAgICAJCiAgICAJYSA9IGItYTsKICAgIAlhbnMgKz0gdmFsLnNlY29uZCAqIChjb3VudFthICsgKG4rMSkqYl0pOwogICAgCQogICAgCQogICAgfSAKCQkJCgkJCQoJCQoJCgoJY291dDw8YW5zPDxlbmRsOwp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWxsIHQ7CgkKCWNpbj4+dDsKCXdoaWxlKHQtLSl7CgkJc29sdmUoKTsKCX0KCXJldHVybiAwOwp9