using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public static void Main() {
var dict = new Dictionary<string,List<int>>();
dict.Insert("x", 1);
dict.Insert("x", 2);
dict.Insert("x", 3);
dict.Insert("y", 4);
dict.Insert("y", 5);
foreach (var p in dict) {
Console.WriteLine("{0} - {1}", p.Key, string.Join(", ", p.Value.ToArray()));
}
}
}
static class DictExtensions {
public static void Insert<TKey,TVal>(this IDictionary<TKey,List<TVal>> d, TKey k, TVal v) {
List<TVal> current;
if (!d.TryGetValue(k, out current)) {
d.Add(k, new List<TVal> { v } );
} else {
current.Add(v);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpIHsKCQl2YXIgZGljdCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZyxMaXN0PGludD4+KCk7CgkJZGljdC5JbnNlcnQoIngiLCAxKTsKCQlkaWN0Lkluc2VydCgieCIsIDIpOwoJCWRpY3QuSW5zZXJ0KCJ4IiwgMyk7CgkJZGljdC5JbnNlcnQoInkiLCA0KTsKCQlkaWN0Lkluc2VydCgieSIsIDUpOwoJCWZvcmVhY2ggKHZhciBwIGluIGRpY3QpIHsKCQkJQ29uc29sZS5Xcml0ZUxpbmUoInswfSAtIHsxfSIsIHAuS2V5LCBzdHJpbmcuSm9pbigiLCAiLCBwLlZhbHVlLlRvQXJyYXkoKSkpOwoJCX0KCX0KfQoKc3RhdGljIGNsYXNzIERpY3RFeHRlbnNpb25zIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBJbnNlcnQ8VEtleSxUVmFsPih0aGlzIElEaWN0aW9uYXJ5PFRLZXksTGlzdDxUVmFsPj4gZCwgVEtleSBrLCBUVmFsIHYpIHsKCQlMaXN0PFRWYWw+IGN1cnJlbnQ7CgkJaWYgKCFkLlRyeUdldFZhbHVlKGssIG91dCBjdXJyZW50KSkgewoJCQlkLkFkZChrLCBuZXcgTGlzdDxUVmFsPiB7IHYgfSApOwoJCX0gZWxzZSB7CgkJCWN1cnJlbnQuQWRkKHYpOwoJCX0KCX0KfQ==