#include <bits/stdc++.h>
using namespace std;
const int maxn = 200005;
const int maxm = 100;
const int inf = 2147483647;
const double eps = 1e-9;
const long long INF = 9223372036854775807ll;
long long qpow(long long a, long long b, long long c) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % c;
    a = a * a % c;
    b >>= 1;
  }
  return ans;
}
struct Node {
  int k, l, r;
  bool operator<(const Node a) const { return abs(r - l) < abs(a.r - a.l); }
};
set<int> s;
priority_queue<Node> q;
bool cmp(Node a, Node b) { return a.r - a.l < b.r - b.l; }
int main() {
  int t;
  scanf("%d", &t);
  while (t--) {
    int n;
    scanf("%d", &n);
    for (register int i = (0); i < (n); ++i) s.insert(i);
    for (register int i = (0); i < (n); ++i) {
      Node u;
      scanf("%d%d%d", &u.k, &u.l, &u.r);
      q.push(u);
    }
    long long ans = 0;
    while (!q.empty()) {
      Node u = q.top();
      q.pop();
      if (u.r - u.l < 0) {
        set<int>::iterator it = s.lower_bound(u.k - 1);
        if (it == s.end() || *it != u.k - 1) {
          if (it == s.begin()) {
            it = s.end();
            it--;
            ans += u.r;
            s.erase(it);
          } else {
            it--;
            ans += u.l;
            s.erase(it);
          }
        } else {
          ans += u.l;
          s.erase(it);
        }
      } else {
        set<int>::iterator it = s.lower_bound(u.k);
        if (it == s.end() || *it != u.k) {
          if (it == s.end()) {
            it = s.begin();
            ans += u.l;
            s.erase(it);
          } else {
            ans += u.r;
            s.erase(it);
          }
        } else {
          ans += u.r;
          s.erase(it);
        }
      }
    }
    printf("%lld\n", ans);
  }
}
