using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Collections;

namespace ABC
{
    class APC2020E
    {
        const string FILE = "/tmp/data.txt";

        public class IAC : IComparer
        {
            // Call CaseInsensitiveComparer.Compare with the parameters reversed.
            int IComparer.Compare(Object x, Object y)
            {
                return ((new CaseInsensitiveComparer()).Compare(y, x));
            }
        }

        static void Main(string[] args)
        {
#if DEBUG
            Console.SetIn(new StreamReader(FILE));
#endif
            var T = RI();
            for (int t = 0; t < T; ++t)
            {
                var N = RI();
                List<int[]> lList = new List<int[]>();
                List<int[]> rList = new List<int[]>();

                Dictionary<int, List<int[]>> lkdic = new Dictionary<int, List<int[]>>();
                Dictionary<int, List<int[]>> rkdic = new Dictionary<int, List<int[]>>();

                int score = 0;
                for (int i = 0; i < N; ++i)
                {
                    var ka = RK(3);
                    score += Math.Min(ka[1], ka[2]);
                    if (ka[1] >= ka[2])
                    {
                        lList.Add(ka);

                    }
                    else
                    {
                        ka[0] = N - ka[0];
                        /*
                        var s = ka[1];
                        ka[1] = ka[2];
                        ka[2] = s; 
                        */
                        rList.Add(ka);
                    }
                }
                var sorted = lList.OrderBy(x => x[0]);
                var added = new SortedList<int, int[]>();

                int currnetK = int.MaxValue;
                foreach(var item in sorted)
                {
                    if (currnetK != item[0])
                    {
                        while (currnetK < added.Count())
                        {
                            added.RemoveAt(added.Count() - 1);
                        }
                        currnetK = item[0];
                    }
                    added.Add(item[3] * -1, item);
                }
                while (currnetK < added.Count())
                {
                    added.RemoveAt(added.Count() - 1);
                }
                foreach (var item in added)
                {
                    score += item.Value[3];
                }

                sorted = rList.OrderBy(x => x[0]);
                added = new SortedList<int, int[]>();

                currnetK = int.MaxValue;
                foreach (var item in sorted)
                {
                    if (currnetK != item[0])
                    {
                        while (currnetK < added.Count())
                        {
                            added.RemoveAt(added.Count() - 1);
                        }
                        currnetK = item[0];
                    }
                    added.Add(item[3] * -1, item);
                }
                while (currnetK < added.Count())
                {
                    added.RemoveAt(added.Count() - 1);
                }
                foreach (var item in added)
                {
                    score += item.Value[3];
                }

                Console.WriteLine(score);
            }


#if DEBUG
            Console.WriteLine("*** end ***");
            Console.SetIn(Console.In);
            Console.ReadKey();
            Console.WriteLine();
#endif
        }

        static int RI()
        {
            return int.Parse(Console.ReadLine());
        }

        static int[] RIa(int n)
        {
            string[] sa = Console.ReadLine().Split(' ');
            int[] la = new int[n];
            for (int i = 0; i < n; ++i)
            {
                la[i] = int.Parse(sa[i]);
            }
            return la;
        }

        static int[] RK(int n)
        {
            string[] sa = Console.ReadLine().Split(' ');
            int[] la = new int[n + 1];
            for (int i = 0; i < n; ++i)
            {
                la[i] = int.Parse(sa[i]);
            }
            la[n] = Math.Abs(la[1] - la[2]);
            return la;
        }

        static int[,] RIa(int r, int c)
        {
            int[,] la = new int[r, c];
            for (int i = 0; i < r; ++i)
            {
                string[] sa = Console.ReadLine().Split(' ');
                for (int j = 0; j < c; ++j)
                {
                    la[r, c] = int.Parse(sa[j]);
                }
            }
            return la;
        }
    }
}
