#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
//#include <ext/pb_ds/detail/standard_policies.hpp>
//#pragma GCC optimize("O3")
using namespace std;
//using namespace __gnu_pbds;
template<typename T>
inline void read(T& x) {
x = 0;
char c = getchar();
bool _ = false;
while (c < '0' || c > '9') _ |= c == '-', c = getchar();
while (c >= '0' && c <= '9') {
x *= 10;
x += c - '0';
c = getchar();
}
if (_) x = -x;
}
#define F first
#define S second
#define pb push_back
#define mt make_tuple
//#define mp make_pair
//typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
typedef long long ll;
//typedef long double ld;
const int rx[4] = {-1, 0, 1, 0};
const int ry[4] = {0, -1, 0, 1};
/// U L D R
typedef pair<int,int> T;
struct segtree {
int n;
vector<T> t;
vector<int> d;
int h;
void apply(int p, int value) {
t[p].F += value;
if (p < n) d[p] += value;
}
T unite(T a, T b) {
if (a.F == b.F) {
return make_pair(a.F, a.S + b.S);
} else {
return max(a, b);
}
}
void recalc(int p) {
while (p > 1) {
p >>= 1;
t[p] = unite(t[p << 1], t[p << 1|1]);
t[p].F += d[p];
}
}
void push(int p) {
for (int s = h; s > 0; --s) {
int i = p >> s;
if (d[i] != 0) {
apply(i << 1, d[i]);
apply(i << 1|1, d[i]);
d[i] = 0;
}
}
}
void inc(int l, int r, int value) {
l += n, r += n;
int l0 = l, r0 = r;
for (; l < r; l >>= 1, r >>= 1) {
if (l & 1) apply(l++, value);
if (r & 1) apply(--r, value);
}
recalc(l0);
recalc(r0 - 1);
}
T query(int l, int r) {
l += n, r += n;
push(l);
push(r - 1);
T res = make_pair(-2e9, 0);
for (; l < r; l >>= 1, r >>= 1) {
if (l & 1) res = unite(res, t[l++]);
if (r & 1) res = unite(t[--r], res);
}
return res;
}
segtree(int n): n(n), t(n << 1, make_pair(0, 1)), h(32 - __builtin_clz(n)), d(n, 0) {
for (int i = n; i < n + n; i++) {
t[i].F = -(i - n);
}
for (int i = n; i < n + n; i++) {
recalc(i);
}
}
};
const int N = 1000100;
vector<int> g[N];
int n, q;
ll ans = 0;
int sum[N];
void calc() {
segtree D(n);
for (int i = n - 1; i >= 0; i--) {
for (int x : g[i]) {
D.inc(x, D.n, 1);
}
T cur = D.query(i, D.n);
if (cur.F == -i){
ans += cur.S;
}
}
}
void solve() {
read(n);
for (int i = 0; i < n; i++) if (g[i].size()) g[i].clear();
for (int i = 0; i < n - 1; i++) {
int x, y;
read(x);
read(y);
if (x > y) swap(x, y);
g[x - 1].pb(y - 1);
}
for (int i = 0; i < n; i++) sort(g[i].begin(), g[i].end());
ans = 0;
calc();
cout << ans << '\n';
}
#define FILE "solid"
int main() {
ios_base::sync_with_stdio(0);
#ifdef LOCAL
freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
#else
// freopen(FILE".in", "r", stdin);
// freopen(FILE".out", "w", stdout);
#endif // LOCAL
read(q);
while (q--) {
solve();
}
#ifdef LOCAL
cerr << "TIME = " << fixed << 1.0 * clock() / CLOCKS_PER_SEC << endl;
#endif // LOCAL
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Ci8vI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgovLyNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgovLyNpbmNsdWRlIDxleHQvcGJfZHMvZGV0YWlsL3N0YW5kYXJkX3BvbGljaWVzLmhwcD4KCi8vI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zIikKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgppbmxpbmUgdm9pZCByZWFkKFQmIHgpIHsKICB4ID0gMDsKICBjaGFyIGMgPSBnZXRjaGFyKCk7CiAgYm9vbCBfID0gZmFsc2U7CiAgd2hpbGUgKGMgPCAnMCcgfHwgYyA+ICc5JykgXyB8PSBjID09ICctJywgYyA9IGdldGNoYXIoKTsKICB3aGlsZSAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKICAgIHggKj0gMTA7CiAgICB4ICs9IGMgLSAnMCc7CiAgICBjID0gZ2V0Y2hhcigpOwogIH0KICBpZiAoXykgeCA9IC14Owp9CgojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG10IG1ha2VfdHVwbGUKLy8jZGVmaW5lIG1wIG1ha2VfcGFpcgoKLy90eXBlZGVmIHRyZWU8aW50LCBudWxsX3R5cGUsIGxlc3M8aW50PiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4gb3JkZXJlZF9zZXQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKLy90eXBlZGVmIGxvbmcgZG91YmxlIGxkOwoKY29uc3QgaW50IHJ4WzRdID0gey0xLCAwLCAxLCAwfTsKY29uc3QgaW50IHJ5WzRdID0gezAsIC0xLCAwLCAxfTsKLy8vIFUgTCBEIFIKCnR5cGVkZWYgcGFpcjxpbnQsaW50PiBUOwoKc3RydWN0IHNlZ3RyZWUgewogIGludCBuOwogIHZlY3RvcjxUPiB0OwogIHZlY3RvcjxpbnQ+IGQ7CiAgaW50IGg7CiAgdm9pZCBhcHBseShpbnQgcCwgaW50IHZhbHVlKSB7CiAgICB0W3BdLkYgKz0gdmFsdWU7CiAgICBpZiAocCA8IG4pIGRbcF0gKz0gdmFsdWU7CiAgfQogIFQgdW5pdGUoVCBhLCBUIGIpIHsKICAgIGlmIChhLkYgPT0gYi5GKSB7CiAgICAgIHJldHVybiBtYWtlX3BhaXIoYS5GLCBhLlMgKyBiLlMpOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIG1heChhLCBiKTsKICAgIH0KICB9CiAgdm9pZCByZWNhbGMoaW50IHApIHsKICAgIHdoaWxlIChwID4gMSkgewogICAgICBwID4+PSAxOwogICAgICB0W3BdID0gdW5pdGUodFtwIDw8IDFdLCB0W3AgPDwgMXwxXSk7CiAgICAgIHRbcF0uRiArPSBkW3BdOwogICAgfQogIH0KICB2b2lkIHB1c2goaW50IHApIHsKICAgIGZvciAoaW50IHMgPSBoOyBzID4gMDsgLS1zKSB7CiAgICAgIGludCBpID0gcCA+PiBzOwogICAgICBpZiAoZFtpXSAhPSAwKSB7CiAgICAgICAgYXBwbHkoaSA8PCAxLCBkW2ldKTsKICAgICAgICBhcHBseShpIDw8IDF8MSwgZFtpXSk7CiAgICAgICAgZFtpXSA9IDA7CiAgICAgIH0KICAgIH0KICB9CiAgdm9pZCBpbmMoaW50IGwsIGludCByLCBpbnQgdmFsdWUpIHsKICAgIGwgKz0gbiwgciArPSBuOwogICAgaW50IGwwID0gbCwgcjAgPSByOwogICAgZm9yICg7IGwgPCByOyBsID4+PSAxLCByID4+PSAxKSB7CiAgICAgIGlmIChsICYgMSkgYXBwbHkobCsrLCB2YWx1ZSk7CiAgICAgIGlmIChyICYgMSkgYXBwbHkoLS1yLCB2YWx1ZSk7CiAgICB9CiAgICByZWNhbGMobDApOwogICAgcmVjYWxjKHIwIC0gMSk7CiAgfQogIFQgcXVlcnkoaW50IGwsIGludCByKSB7CiAgICBsICs9IG4sIHIgKz0gbjsKICAgIHB1c2gobCk7CiAgICBwdXNoKHIgLSAxKTsKICAgIFQgcmVzID0gbWFrZV9wYWlyKC0yZTksIDApOwogICAgZm9yICg7IGwgPCByOyBsID4+PSAxLCByID4+PSAxKSB7CiAgICAgIGlmIChsICYgMSkgcmVzID0gdW5pdGUocmVzLCB0W2wrK10pOwogICAgICBpZiAociAmIDEpIHJlcyA9IHVuaXRlKHRbLS1yXSwgcmVzKTsKICAgIH0KICAgIHJldHVybiByZXM7CiAgfQogIHNlZ3RyZWUoaW50IG4pOiBuKG4pLCB0KG4gPDwgMSwgbWFrZV9wYWlyKDAsIDEpKSwgaCgzMiAtIF9fYnVpbHRpbl9jbHoobikpLCBkKG4sIDApIHsKICAgIGZvciAoaW50IGkgPSBuOyBpIDwgbiArIG47IGkrKykgewogICAgICB0W2ldLkYgPSAtKGkgLSBuKTsKICAgIH0KICAgIGZvciAoaW50IGkgPSBuOyBpIDwgbiArIG47IGkrKykgewogICAgICByZWNhbGMoaSk7CiAgICB9CiAgfQp9OwoKY29uc3QgaW50IE4gPSAxMDAwMTAwOwoKdmVjdG9yPGludD4gZ1tOXTsKaW50IG4sIHE7CmxsIGFucyA9IDA7CmludCBzdW1bTl07Cgp2b2lkIGNhbGMoKSB7CiAgc2VndHJlZSBEKG4pOwogIGZvciAoaW50IGkgPSBuIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgIGZvciAoaW50IHggOiBnW2ldKSB7CiAgICAgIEQuaW5jKHgsIEQubiwgMSk7CiAgICB9CiAgICBUIGN1ciA9IEQucXVlcnkoaSwgRC5uKTsKICAgIGlmIChjdXIuRiA9PSAtaSl7CiAgICAgIGFucyArPSBjdXIuUzsKICAgIH0KICB9Cn0KCnZvaWQgc29sdmUoKSB7CiAgcmVhZChuKTsKICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgaWYgKGdbaV0uc2l6ZSgpKSBnW2ldLmNsZWFyKCk7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKSB7CiAgICBpbnQgeCwgeTsKICAgIHJlYWQoeCk7CiAgICByZWFkKHkpOwogICAgaWYgKHggPiB5KSBzd2FwKHgsIHkpOwogICAgZ1t4IC0gMV0ucGIoeSAtIDEpOwogIH0KICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgc29ydChnW2ldLmJlZ2luKCksIGdbaV0uZW5kKCkpOwogIGFucyA9IDA7CiAgY2FsYygpOwogIGNvdXQgPDwgYW5zIDw8ICdcbic7Cn0KCiNkZWZpbmUgRklMRSAic29saWQiCmludCBtYWluKCkgewogIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiNpZmRlZiBMT0NBTAogIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwovLyAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKI2Vsc2UKLy8gIGZyZW9wZW4oRklMRSIuaW4iLCAiciIsIHN0ZGluKTsKLy8gIGZyZW9wZW4oRklMRSIub3V0IiwgInciLCBzdGRvdXQpOwojZW5kaWYgLy8gTE9DQUwKICByZWFkKHEpOwogIHdoaWxlIChxLS0pIHsKICAgIHNvbHZlKCk7CiAgfQojaWZkZWYgTE9DQUwKICBjZXJyIDw8ICJUSU1FID0gIiA8PCBmaXhlZCA8PCAxLjAgKiBjbG9jaygpIC8gQ0xPQ0tTX1BFUl9TRUMgPDwgZW5kbDsKI2VuZGlmIC8vIExPQ0FMCiAgcmV0dXJuIDA7Cn0=