import sys
input = sys.stdin.readline

class SegTree:
  def segfunc(self, x, y):
    return min(x, y) #ここ判定関数（ただし結合則があるもの）
  def __init__(self, n, ide_ele, init_val):
    #####単位元######
    self.ide_ele = ide_ele
    #num:n以上の最小の2のべき乗
    self.num = 2 ** (n - 1).bit_length()
    self.seg = [self.ide_ele] * 2 * self.num
    #set_val
    for i in range(n):
      self.seg[i + self.num - 1] = init_val[i]    
    #built
    for i in range(self.num - 2, -1, -1) :
      self.seg[i] = self.segfunc(self.seg[2 * i + 1], self.seg[2 * i + 2]) 
  def update(self, k, x):
    k += self.num - 1
    self.seg[k] = x
    while k + 1:
      k = (k - 1) // 2
      self.seg[k] = self.segfunc(self.seg[k * 2 + 1], self.seg[k * 2 + 2]) 
  def query(self, p, q):
    if q <= p:
      return self.ide_ele
    p += self.num - 1
    q += self.num - 2
    res = self.ide_ele
    while q - p > 1:
      if p & 1 == 0:
        res = self.segfunc(res, self.seg[p])
      if q & 1 == 1:
        res = self.segfunc(res, self.seg[q])
        q -= 1
      p = p // 2
      q = (q - 1) // 2
    if p == q:
      res = self.segfunc(res, self.seg[p])
    else:
      res = self.segfunc(self.segfunc(res, self.seg[p]), self.seg[q])
    return res

for _ in range(int(input())):
  N = int(input())
  a = []
  mxsm = 0
  for _ in range(N):
    K, L, R = map(int, input().split())
    mxsm += max(L, R)
    a.append((K, L, R))
  a.sort(key = lambda x: -abs(x[1] - x[2]))
  imos = [0] * (N + 1)
  for K, L, R in a:
    if L < R:
      imos[K] += 1
      imos[-1] -= 1
    elif L > R:
      imos[0] += 1
      imos[K] -= 1
  for i in range(N): imos[i + 1] += imos[i]
  base = 10 ** 6
  inf = 10 ** 12
  imosi = [imos[i] * base + i for i in range(N + 1)]
  seg = SegTree(N + 1, inf, imosi)
  res = 0
  for K, L, R in a:
    q = 0
    if L < R:
      q = seg.query(K, N)
    elif L > R:
      q = seg.query(0, K)
    if q == inf: res += abs(L - R)
    else: seg.update(q % base, inf)
    #print(q, K, L, R, q % base)
  print(mxsm - res)