#include <bits/stdc++.h>
typedef struct {
  long long node;
  long long cost;
} data;
data heap[524288];
long long hsize = 0;
void resheap() {
  hsize = 0;
  long long i;
  heap[0].node = -1;
  heap[0].cost = -4154118101919364364;
  for (i = 1; i < 524288; i++) {
    heap[i].node = -1;
    heap[i].cost = 4154118101919364364;
  }
}
int swjud(data high, data low) {
  if (high.cost > low.cost) {
    return 1;
  }
  return -1;
}
void pqpush(data x) {
  long long a, b;
  data m;
  hsize++;
  heap[hsize] = x;
  a = hsize;
  while (1) {
    b = a / 2;
    if (swjud(heap[b], heap[a]) == 1) {
      m = heap[a];
      heap[a] = heap[b];
      heap[b] = m;
    } else {
      break;
    }
    a = b;
  }
}
data pqpop() {
  long long a, b, c;
  data m, sw;
  m = heap[1];
  heap[1] = heap[hsize];
  heap[hsize].node = -1;
  heap[hsize].cost = 4154118101919364364;
  hsize--;
  a = 1;
  while (1) {
    b = a * 2;
    c = a * 2 + 1;
    if (swjud(heap[a], heap[b]) == -1 && swjud(heap[a], heap[c]) == -1) {
      break;
    }
    if (swjud(heap[b], heap[c]) == -1) {
      sw = heap[a];
      heap[a] = heap[b];
      heap[b] = sw;
      a = b;
    } else {
      sw = heap[a];
      heap[a] = heap[c];
      heap[c] = sw;
      a = c;
    }
  }
  return m;
}
typedef struct {
  long long val;
  long long node;
} sd;
int sdsortfncsj(const void *a, const void *b) {
  if (((sd *)a)->val < ((sd *)b)->val) {
    return -1;
  }
  if (((sd *)a)->val > ((sd *)b)->val) {
    return 1;
  }
  return 0;
}
int sdsortfnckj(const void *a, const void *b) {
  if (((sd *)a)->val > ((sd *)b)->val) {
    return -1;
  }
  if (((sd *)a)->val < ((sd *)b)->val) {
    return 1;
  }
  return 0;
}
int main() {
  resheap();
  data pd, od;
  long long t, res, i, n;
  long long k, l, r;
  sd fd[524288], ld[524288];
  long long fdc = 0, ldc = 0;
  scanf("%lld", &t);
  while (t > 0) {
    t--;
    res = 0;
    scanf("%lld", &n);
    fdc = 0;
    ldc = 0;
    for (i = 0; i < n; i++) {
      scanf("%lld%lld%lld", &k, &l, &r);
      if (l == r) {
        res += l;
        continue;
      }
      if (l > r) {
        res += r;
        fd[fdc].val = k;
        fd[fdc].node = l - r;
        fdc++;
      }
      if (l < r) {
        res += l;
        ld[ldc].val = k;
        ld[ldc].node = r - l;
        ldc++;
      }
    }
    qsort(fd, fdc, sizeof(fd[0]), sdsortfncsj);
    qsort(ld, ldc, sizeof(ld[0]), sdsortfnckj);
    fdc--;
    ldc--;
    while (hsize > 0) {
      pqpop();
    }
    for (i = n; i >= 1; i--) {
      while (fdc >= 0) {
        if (fd[fdc].val < i) {
          break;
        }
        pd.cost = fd[fdc].node;
        pqpush(pd);
        fdc--;
      }
      while (hsize > i) {
        pqpop();
      }
      if (hsize > 0) {
        od = pqpop();
        res += od.cost;
      }
    }
    while (hsize > 0) {
      pqpop();
    }
    for (i = 1; i <= n; i++) {
      while (ldc >= 0) {
        if (ld[ldc].val >= i) {
          break;
        }
        pd.cost = ld[ldc].node;
        pqpush(pd);
        ldc--;
      }
      while (hsize > (n - i + 1)) {
        pqpop();
      }
      if (hsize > 0) {
        od = pqpop();
        res += od.cost;
      }
    }
    printf("%lld\n", res);
  }
}
