#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;
typedef struct node {
long start;
long death;
} ii;
long dp[70001];
ii nodes[70001];
int N;
int bfs(long start, vector < vector < long > >&Graph)
{
long i;
long deathMain = nodes[start].death;
dp[start] = 0;
queue < long >Q;
Q.push(start);
while (!Q.empty()) {
int current = Q.front();
Q.pop();
for (i = 0; i < Graph[current].size(); i++) {
if (nodes[Graph[current][i]].start <= deathMain) {
Q.push(Graph[current][i]);
dp[Graph[current][i]] = dp[current] + 1;
}
}
}
}
int main()
{
int test;
cin >> test;
long i;
while (test--) {
scanf("%ld", &N);
vector < vector < long > >Graph(N + 1);
long i, parent, death, start;
for (i = 1; i <= N; i++) {
scanf("%ld %ld %ld", &parent, &start, &death);
nodes[i].start = start;
nodes[i].death = death;
parent++;
Graph[parent].push_back(i);
}
long j;
for (i = 1; i <= N; i++) {
memset(dp, 0, sizeof(dp));
bfs(i, Graph);
long ans = 0;
for (j = 1; j <= N; j++)
ans = max(ans, dp[j]);
printf("%ld ", ans);
}
printf("\n");
}
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8cXVldWU+CiNpbmNsdWRlPGNzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgc3RydWN0IG5vZGUgewogICAgbG9uZyBzdGFydDsKICAgIGxvbmcgZGVhdGg7Cn0gaWk7CmxvbmcgZHBbNzAwMDFdOwppaSBub2Rlc1s3MDAwMV07CmludCBOOwppbnQgYmZzKGxvbmcgc3RhcnQsIHZlY3RvciA8IHZlY3RvciA8IGxvbmcgPiA+JkdyYXBoKQp7CiAgICBsb25nIGk7CiAgICBsb25nIGRlYXRoTWFpbiA9IG5vZGVzW3N0YXJ0XS5kZWF0aDsKICAgIGRwW3N0YXJ0XSA9IDA7CiAgICBxdWV1ZSA8IGxvbmcgPlE7CiAgICBRLnB1c2goc3RhcnQpOwogICAgd2hpbGUgKCFRLmVtcHR5KCkpIHsKCWludCBjdXJyZW50ID0gUS5mcm9udCgpOwoJUS5wb3AoKTsKCWZvciAoaSA9IDA7IGkgPCBHcmFwaFtjdXJyZW50XS5zaXplKCk7IGkrKykgewoJICAgIGlmIChub2Rlc1tHcmFwaFtjdXJyZW50XVtpXV0uc3RhcnQgPD0gZGVhdGhNYWluKSB7CgkJUS5wdXNoKEdyYXBoW2N1cnJlbnRdW2ldKTsKCQlkcFtHcmFwaFtjdXJyZW50XVtpXV0gPSBkcFtjdXJyZW50XSArIDE7CgkgICAgfQoJfQogICAgfQp9CiAKaW50IG1haW4oKQp7CiAgICBpbnQgdGVzdDsKICAgIGNpbiA+PiB0ZXN0OwogICAgbG9uZyBpOwogICAgd2hpbGUgKHRlc3QtLSkgewoJc2NhbmYoIiVsZCIsICZOKTsKCXZlY3RvciA8IHZlY3RvciA8IGxvbmcgPiA+R3JhcGgoTiArIDEpOwoJbG9uZyBpLCBwYXJlbnQsIGRlYXRoLCBzdGFydDsKCWZvciAoaSA9IDE7IGkgPD0gTjsgaSsrKSB7CgkgICAgc2NhbmYoIiVsZCAlbGQgJWxkIiwgJnBhcmVudCwgJnN0YXJ0LCAmZGVhdGgpOwoJICAgIG5vZGVzW2ldLnN0YXJ0ID0gc3RhcnQ7CgkgICAgbm9kZXNbaV0uZGVhdGggPSBkZWF0aDsKCSAgICBwYXJlbnQrKzsKCSAgICBHcmFwaFtwYXJlbnRdLnB1c2hfYmFjayhpKTsKCX0KCWxvbmcgajsKCWZvciAoaSA9IDE7IGkgPD0gTjsgaSsrKSB7CgkgICAgbWVtc2V0KGRwLCAwLCBzaXplb2YoZHApKTsKCSAgICBiZnMoaSwgR3JhcGgpOwoJICAgIGxvbmcgYW5zID0gMDsKCSAgICBmb3IgKGogPSAxOyBqIDw9IE47IGorKykKCQlhbnMgPSBtYXgoYW5zLCBkcFtqXSk7CgkgICAgcHJpbnRmKCIlbGQgIiwgYW5zKTsKIAogCgl9CgoJcHJpbnRmKCJcbiIpOwogICAgfQp9Cg==