Problem:
Score : 500 points

Problem Statement

We have N camels numbered 1,2,\ldots,N.
Snuke has decided to make them line up in a row.

The happiness of Camel i will be L_i if it is among the K_i frontmost camels, and R_i otherwise.

Snuke wants to maximize the total happiness of the camels. Find the maximum possible total happiness of the camel.

Solve this problem for each of the T test cases given.

Constraints

All values in input are integers.

1 \leq T \leq 10^5

1 \leq N \leq 2 \times 10^{5}

1 \leq K_i \leq N

1 \leq L_i, R_i \leq 10^9

The sum of values of N in each input file is at most 2 \times 10^5.

Input

Input is given from Standard Input in the following format:

T
\mathrm{case}_1
\vdots
\mathrm{case}_T

Each case is given in the following format:

N
K_1 L_1 R_1
\vdots
K_N L_N R_N

Output

Print T lines. The i-th line should contain the answer to the i-th test case.

Sample Input 1

3
2
1 5 10
2 15 5
3
2 93 78
1 71 59
3 57 96
19
19 23 16
5 90 13
12 85 70
19 67 78
12 16 60
18 48 28
5 4 24
12 97 97
4 57 87
19 91 74
18 100 76
7 86 46
9 100 57
3 76 73
6 84 93
1 6 84
11 75 94
19 15 3
12 11 34

Sample Output 1

25
221
1354

In the first test case, it is optimal to line up the camels in the order 2, 1.

Camel 1 is not the frontmost camel, so its happiness will be 10.

Camel 2 is among the two frontmost camels, so its happiness will be 15.

In the second test case, it is optimal to line up the camels in the order 2, 1, 3.

Camel 1 is among the two frontmost camels, so its happiness will be 93.

Camel 2 is the frontmost camel, so its happiness will be 71.

Camel 3 is among the three frontmost camels, so its happiness will be 57.

Solution in Ruby (2.7.1) (judge verdict: Wrong Answer)

#exec({'RUBY_THREAD_VM_STACK_SIZE'=>'100000000'},'/usr/bin/ruby', $0) if !ENV['RUBY_THREAD_VM_STACK_SIZE']
require 'prime'

def inpf() a=gets.chomp.split(" ").map(&:to_f)end

def inps() a=gets.chomp.split(" ")end

def copy(a) Marshal.load(Marshal.dump(a)) end

def kaijo(n,r = 10**9+7)(n < 2)? 1 : (2..n).inject{|memo,u|memo=(memo*u)%r} end

def na(n,d=0) Array.new(n,d)end

def na2(n,m,d=0) Array.new(n){Array.new(m,d)}end

def na3(n,m,l,d=0) Array.new(n){Array.new(m){Array.new(l,d)}}end

def inp() a=gets.chomp.split(" ").map(&:to_i)end

def r_up(a, b) (a+b-1)/b end

def sum(a) a.inject(:+) end

def big(a,b) return (a>b)? a:b end

def small(a,b) return (a<b)? a:b end

class Hp_neg
  def initialize(len = 200000)
    @main = na(len,[99999999,nil])
    @ind = 1
  end

  def push(n)
    @main[@ind] = n
    sind = @ind
    while(sind >= 2)
      nind = sind/2
      if(@main[sind][0] < @main[nind][0])
        @main[sind], @main[nind] = @main[nind], @main[sind]
      else
        break
      end
      sind /= 2
    end
    @ind += 1
  end

  def put()
    return @main
  end

  def pop()
    ans = @main[1]
    @ind -= 1
    @main[1] = @main[@ind]
    @main[@ind] = [99999999,nil]
    sind = 1
    while(true)
      nind = sind*2
      break if(nind > @ind)
      l = @main[nind]
      nind += 1
      if(nind > @ind)
        ind = nind-1
        if(@main[ind][0] < @main[sind][0])
          @main[sind], @main[ind] = @main[ind], @main[sind]
        end
        break
      end
      r = @main[nind]
      ind = (l[0] > r[0])? nind : nind-1
      if(@main[ind][0] < @main[sind][0])
        @main[sind], @main[ind] = @main[ind], @main[sind]
      end
      sind = ind
    end

    return ans
  end

  def size()
    @ind
  end

  def res()
    @ind = 1
    push([99999999,nil])
  end
end

t = inp[0]
t.times do
  ans = 0
  n = inp[0]
  hp = Hp_neg.new(n+5)
  hp2 = Hp_neg.new(n+5)
  t = na2(n,0)
  t2 = na2(n,0)
  lc = 0
  rc = 0
  n.times do
    k,l,r = inp
    if l-r > 0
      lc += 1
    elsif r-l > 0
      rc += 1
    end
    ans += small(l,r)
    if r-l < 0
      t[k-1].push([r-l])
    elsif r-l > 0
      t2[k-1].push([l-r])
    end
  end
  (lc...n).reverse_each do |i|
    t[i].each do |a|
      hp.push(a)
    end
  end
  (0...lc).reverse_each do |i|
    t[i].each do |a|
      hp.push(a)
    end
    d = hp.pop[0]
    if(d <= 0)
      ans += d * -1
    else
      hp.push([99999999])
    end
  end
  (0...rc).reverse_each do |i|
    t2[i].each do |a|
      hp2.push(a)
    end
  end
  (rc...n).each do |i|
    d = hp2.pop[0]
    if(d <= 0)
      ans += d * -1
    else
      hp2.push([9999999])
    end
    t2[i].each do |a|
      hp2.push(a)
    end
  end

  p ans
end