#include <bits/stdc++.h>
using ll = long long;
const ll MOD = 998244353;
const int INF = (ll)1e9 + 7;
const ll INFLL = (ll)1e18;
using namespace std;
template <class t>
using vvector = vector<vector<t>>;
template <class t>
using vvvector = vector<vector<vector<t>>>;
template <class t>
using priority_queuer = priority_queue<t, vector<t>, greater<t>>;
template <class t, class u>
bool chmax(t &a, u b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class t, class u>
bool chmin(t &a, u b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
namespace templates {
ll modpow(ll x, ll b) {
  ll res = 1;
  while (b) {
    if (b & 1) res = res * x % MOD;
    x = x * x % MOD;
    b >>= 1;
  }
  return res;
}
ll modinv(ll x) { return modpow(x, MOD - 2); }
bool was_output = false;
template <class t>
void output(t a) {
  if (was_output) cout << " ";
  cout << a;
  was_output = true;
}
void outendl() {
  was_output = false;
  cout << endl;
}
ll in() {
  ll res;
  scanf("%lld", &res);
  return res;
}
template <class t>
istream &operator>>(istream &is, vector<t> &x) {
  for (auto &i : x) is >> i;
  return is;
}
template <class t, class u>
istream &operator>>(istream &is, pair<t, u> &x) {
  is >> x.first >> x.second;
  return is;
}
template <class t>
void in(t &x) {
  cin >> x;
}
template <class t>
t in() {
  t res;
  cin >> res;
  return res;
}
template <class t>
void out(t x) {
  cout << x;
}
template <class t>
vector<t> sorted(
    vector<t> line,
    function<bool(t, t)> comp = [](t a, t b) { return a < b; }) {
  sort(line.begin(), line.end(), comp);
  return line;
}
template <class t>
vector<t> reversed(vector<t> line) {
  reverse(line.begin(), line.end());
  return line;
}
}  // namespace templates
using namespace templates;
ll func() {
  int n = in();
  using T = tuple<ll, ll, ll>;
  vector<T> fronts;
  vector<T> backs;
  ll res = 0;
  for (int i = (n) * (strlen("") != 0); i < (int)(strlen("") ?: (n)); ++i) {
    ll a = in();
    ll b = in();
    ll c = in();
    if (b == c) {
      res += b;
      continue;
    }
    if (b > c) {
      fronts.emplace_back(a, b, c);
    } else {
      backs.emplace_back(n - a, c, b);
    }
  }
  function<ll(vector<T> line)> func =
      (function<ll(vector<T> line)>)[&](vector<T> line)->ll {
    int n = line.size();
    sort((line).begin(), (line).end(), greater<T>());
    set<pair<long long, long long>> s;
    vector<bool> used(n, false);
    int itr = 0;
    ll res = 0;
    for (int p = (strlen("n + 1") ? n + 1 : (1)) - 1;
         p >= (int)(strlen("n + 1") ? (1) : 0); --p) {
      while (itr < n and p <= get<0>(line[itr])) {
        s.emplace(get<1>(line[itr]), itr);
        ++itr;
      }
      if (s.empty()) continue;
      auto itr = s.rbegin();
      res += itr->first;
      used[itr->second] = true;
      s.erase(*itr);
    }
    for (int i = (n) * (strlen("") != 0); i < (int)(strlen("") ?: (n)); ++i) {
      if (used[i]) continue;
      res += get<2>(line[i]);
    }
    return res;
  };
  ll res_1 = func(fronts);
  ll res_2 = func(backs);
  return res + res_1 + res_2;
}
int main() {
  int n = in();
  for (int i = (n) * (strlen("") != 0); i < (int)(strlen("") ?: (n)); ++i) {
    cout << func() << endl;
  }
  return 0;
}
