#include <bits/stdc++.h>
using namespace std;
template <typename T1, typename T2>
ostream& operator<<(ostream& os, const pair<T1, T2>& a) {
  os << "(" << a.first << ", " << a.second << ")";
  return os;
}
const char newl = '\n';
struct tapi {
  int k, l, r;
  bool operator<(const tapi& a) const { return k < a.k; }
};
int main() {
  int q;
  cin >> q;
  while (q--) {
    int n;
    cin >> n;
    vector<tapi> a(n);
    for (int i = 0; i < n; ++i) cin >> a[i].k >> a[i].l >> a[i].r;
    sort(a.begin(), a.end());
    int j = 0;
    long long ans = 0;
    priority_queue<pair<int, int> > l, r;
    for (int i = 1; i < n + 1; ++i) {
      if (!r.empty()) {
        ans += a[r.top().second].r;
        r.pop();
      }
      while (j < n && a[j].k <= i) {
        if (a[j].l <= a[j].r) r.push({a[j].l - a[j].r, j});
        j++;
      }
    }
    while (!r.empty()) {
      ans += a[r.top().second].l;
      r.pop();
    }
    reverse(a.begin(), a.end());
    j = 0;
    for (int i = n; i > 0; --i) {
      while (j < n && a[j].k <= i) {
        if (a[j].l > a[j].r) l.push({a[j].r - a[j].l, j});
        j++;
      }
      if (!l.empty()) {
        ans += a[l.top().second].l;
        l.pop();
      }
    }
    while (!l.empty()) {
      ans += a[l.top().second].r;
      l.pop();
    }
    cout << ans << newl;
  }
}
