#include <bits/stdc++.h>
int R = 1, C = 1, H[2000010], N[2000010];
int MIN(int a, int b) { return a < b ? a : b; }
int hyouka(int a, int b) {
  if (C < b) return 1;
  if (C < a || b == 0) return 0;
  return N[H[a]] > N[H[b]] ? 1 : 0;
}
void hin(int a) {
  int i = C++;
  for (N[H[0] = R] = a; hyouka(0, i / 2); i /= 2) H[i] = H[i / 2];
  H[i] = R++;
}
int hout() {
  int rt = H[1], i, j = 2, k = H[--C];
  for (i = 1; hyouka(i, C); i = j)
    H[i] = H[j = i * 2 + 1 - hyouka(i * 2, i * 2 + 1)];
  H[j / 2] = k;
  return rt;
}
int p[200010];
int d[200010] = {};
int q[200010];
int Top(int a) {
  for (; p[a] - a; a = p[a])
    ;
  return a;
}
int Find(int a, int b) {
  int n, r;
  for (r = Top(a); p[a] != a; a = n) {
    n = p[a];
    p[a] = r;
  }
  for (r = Top(b); p[b] != b; b = n) {
    n = p[b];
    p[b] = r;
  }
  return a - b ? 1 : 0;
}
void Union(int a, int b) {
  if (Find(a, b)) {
    a = Top(a);
    b = Top(b);
    int c = MIN(q[a], q[b]);
    q[a] = q[b] = c;
    d[a] < d[b] ? (p[a] = b) : (p[b] = a);
    if (d[a] == d[b]) d[a]++;
  }
}
int main() {
  int T, n, i, j, k[200010], l[200010], r[200010], kk[200010];
  long long ans;
  scanf("%d", &T);
  while (T--) {
    scanf("%d", &n);
    for (i = 0; i < n; i++) scanf("%d %d %d", &k[i], &l[i], &r[i]);
    R = C = 1;
    ans = 0;
    for (i = 0; i <= n; i++) p[i] = q[i] = i;
    for (i = 0; i < n; i++) {
      if (l[i] > r[i]) {
        ans += r[i];
        kk[R] = k[i];
        hin(l[i] - r[i]);
      }
    }
    while (C - 1) {
      i = hout();
      j = q[Top(kk[i])];
      if (j) {
        ans += N[i];
        Union(j, j - 1);
      }
    }
    R = C = 1;
    for (i = 0; i <= n + 1; i++) p[i] = q[i] = i;
    for (i = 0; i < n; i++) {
      if (l[i] <= r[i]) {
        ans += l[i];
        kk[R] = k[i];
        hin(r[i] - l[i]);
      }
    }
    while (C - 1) {
      i = hout();
      j = q[Top(kk[i] + 1)];
      if (j <= n) {
        ans += N[i];
        Union(j, j + 1);
      }
    }
    printf("%lld\n", ans);
  }
  return 0;
}
