using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
public static void Main()
{
string data = @"aaa bb 10 cc 11 dd 12 ee 13
aaa cc 9 dd 4 bb 2 ee 13
aaa cc 16 bb 9 dd 8 ee 13
bbb a1 6 a2 9 a3 8
bbb a2 7 a3 4 a1 6";
string result = string.Join("\r\n", data.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Split(' ')).SelectMany(x => Enumerable.Range(0, x.Count() / 2).Select(y => new { a = x[0], b = x[y * 2 + 1], c = int.Parse(x[y * 2 + 2]) }))
.GroupBy(x => x.a)
.Select(x => new { a = x.Key + " " + x.Count() + "次", b = x.GroupBy(y => y.b).Select(y => new { b = y.Key, c = y.Sum(z => z.c) }) })
.Select(x => x.a + " " + string.Join(" ", x.b.Select(y => y.b + " " + y.c.ToString()))));
Console.WriteLine(result);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJCXN0cmluZyBkYXRhID0gQCJhYWEgYmIgMTAgY2MgMTEgZGQgMTIgZWUgMTMKYWFhIGNjIDkgZGQgNCBiYiAyIGVlIDEzCmFhYSBjYyAxNiBiYiA5IGRkIDggZWUgMTMKYmJiIGExIDYgYTIgOSBhMyA4CmJiYiBhMiA3IGEzIDQgYTEgNiI7CiAgICAgICAgICAgIHN0cmluZyByZXN1bHQgPSBzdHJpbmcuSm9pbigiXHJcbiIsIGRhdGEuU3BsaXQobmV3IHN0cmluZ1tdIHsgIlxuIiB9LCBTdHJpbmdTcGxpdE9wdGlvbnMuUmVtb3ZlRW1wdHlFbnRyaWVzKQogICAgICAgICAgICAgICAgLlNlbGVjdCh4ID0+IHguU3BsaXQoJyAnKSkuU2VsZWN0TWFueSh4ID0+IEVudW1lcmFibGUuUmFuZ2UoMCwgeC5Db3VudCgpIC8gMikuU2VsZWN0KHkgPT4gbmV3IHsgYSA9IHhbMF0sIGIgPSB4W3kgKiAyICsgMV0sIGMgPSBpbnQuUGFyc2UoeFt5ICogMiArIDJdKSB9KSkKICAgICAgICAgICAgICAgIC5Hcm91cEJ5KHggPT4geC5hKQogICAgICAgICAgICAgICAgLlNlbGVjdCh4ID0+IG5ldyB7IGEgPSB4LktleSArICIgIiArIHguQ291bnQoKSArICLmrKEiLCBiID0geC5Hcm91cEJ5KHkgPT4geS5iKS5TZWxlY3QoeSA9PiBuZXcgeyBiID0geS5LZXksIGMgPSB5LlN1bSh6ID0+IHouYykgfSkgfSkKICAgICAgICAgICAgICAgIC5TZWxlY3QoeCA9PiB4LmEgKyAiICIgKyBzdHJpbmcuSm9pbigiICIsIHguYi5TZWxlY3QoeSA9PiB5LmIgKyAiICIgKyB5LmMuVG9TdHJpbmcoKSkpKSk7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHJlc3VsdCk7Cgl9Cn0=