#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<vector<int>> edges(n + 1);
for (int i = 0; i < n - 1; i++) {
int u, v;
cin >> u >> v;
edges[u].push_back(v);
edges[v].push_back(u);
}
vector<int> ks(n + 1);
long long ans = 0;
for (int x = 1; x <= n; x++) {
if (edges[x].size() == 1) {
ans += n - 2;
int y = edges[x][0];
ks[y]++;
}
}
for (int x = 0; x <= n; x++) {
ans -= 1LL * ks[x] * (ks[x] - 1) / 2;
if (edges[x].size() == 2 && ks[x] == 0) ans++;
}
cout << 1LL * n * (n - 1) * (n - 2) / 6 - ans << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKCiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgaW50IG47CiAgICAgICAgY2luID4+IG47CgogICAgICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gZWRnZXMobiArIDEpOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewogICAgICAgICAgICBpbnQgdSwgdjsKICAgICAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICAgICAgZWRnZXNbdV0ucHVzaF9iYWNrKHYpOwogICAgICAgICAgICBlZGdlc1t2XS5wdXNoX2JhY2sodSk7CiAgICAgICAgfQoKICAgICAgICB2ZWN0b3I8aW50PiBrcyhuICsgMSk7CiAgICAgICAgbG9uZyBsb25nIGFucyA9IDA7CgogICAgICAgIGZvciAoaW50IHggPSAxOyB4IDw9IG47IHgrKykgewogICAgICAgICAgICBpZiAoZWRnZXNbeF0uc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgICAgIGFucyArPSBuIC0gMjsKICAgICAgICAgICAgICAgIGludCB5ID0gZWRnZXNbeF1bMF07CiAgICAgICAgICAgICAgICBrc1t5XSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8PSBuOyB4KyspIHsKICAgICAgICAgICAgYW5zIC09IDFMTCAqIGtzW3hdICogKGtzW3hdIC0gMSkgLyAyOwogICAgICAgICAgICBpZiAoZWRnZXNbeF0uc2l6ZSgpID09IDIgJiYga3NbeF0gPT0gMCkgYW5zKys7CiAgICAgICAgfQoKICAgICAgICBjb3V0IDw8IDFMTCAqIG4gKiAobiAtIDEpICogKG4gLSAyKSAvIDYgLSBhbnMgPDwgJ1xuJzsKICAgIH0KfQo=