using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Contest { class Scanner { private string[] line = new string[0]; private int index = 0; public string Next() { if (line.Length <= index) { line = Console.ReadLine().Split(' '); index = 0; } var res = line[index]; index++; return res; } public int NextInt() { //Console.WriteLine(Next()); return int.Parse(Next()); //return 1; } public long NextLong() { return long.Parse(Next()); } public string[] Array() { line = Console.ReadLine().Split(' '); index = line.Length; return line; } public int[] IntArray() { return Array().Select(int.Parse).ToArray(); } public long[] LongArray() { return Array().Select(long.Parse).ToArray(); } } class HashMap : Dictionary { new public V this[K i] { get { V v; return TryGetValue(i, out v) ? v : base[i] = default(V); } set { base[i] = value; } } } class Program { HashMap Hs = new HashMap(); public void Solve() { var sc = new Scanner(); var n = sc.NextInt(); for (int i = 0; i < n; i++) { sc.Next(); sc.Next(); var s = sc.NextInt(); var tag = sc.Array(); foreach (var ss in tag) { Hs[ss] += s; } } var ans = Hs.ToArray(); Array.Sort(ans, (a, b) => { if (a.Value == b.Value) { return a.Key.CompareTo(b.Key); } return -a.Value.CompareTo(b.Value); }); for (int i = 0; i < Math.Min(10, ans.Length); i++) { var p = ans[i]; Console.WriteLine($"{p.Key} {p.Value}"); } } static void Main(string[] args) { new Program().Solve(); } } }