#include <bits/stdc++.h>
using namespace std;
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  long long t;
  cin >> t;
  while (t--) {
    long long n;
    cin >> n;
    array<long long, 3> a[n];
    vector<long long> l, r;
    long long ans = 0;
    for (long long i = 0; i < n; i++) {
      cin >> a[i][0] >> a[i][1] >> a[i][2];
      if (a[i][1] > a[i][2])
        l.push_back(i);
      else if (a[i][1] < a[i][2])
        r.push_back(i);
      else
        ans += a[i][1];
    }
    sort(l.begin(), l.end(),
         [&](long long p, long long q) { return a[p][0] < a[q][0]; });
    multiset<pair<long long, long long> > taken;
    for (auto &i : l) {
      array<long long, 3> tt = a[i];
      if (taken.size() >= tt[0]) {
        pair<long long, long long> top = *taken.begin();
        if (top.first < tt[1]) {
          taken.erase(taken.begin());
          ans -= top.first;
          ans -= top.second;
          ans += tt[1];
          taken.insert({tt[1], -tt[2]});
        } else
          ans += tt[2];
      } else {
        ans += tt[1];
        taken.insert({tt[1], -tt[2]});
      }
    }
    taken.clear();
    sort(r.begin(), r.end(),
         [&](long long p, long long q) { return a[p][0] > a[q][0]; });
    for (auto &i : r) {
      array<long long, 3> tt = a[i];
      if (n - tt[0] == 0) {
        ans += tt[1];
        continue;
      }
      if (taken.size() >= n - tt[0]) {
        pair<long long, long long> top = *taken.begin();
        if (top.first < tt[2]) {
          taken.erase(taken.begin());
          ans -= top.first;
          ans -= top.second;
          ans += tt[2];
          taken.insert({tt[2], -tt[1]});
        } else
          ans += tt[1];
      } else {
        ans += tt[2];
        taken.insert({tt[2], -tt[1]});
      }
    }
    cout << ans << endl;
  }
}
