using System.Collections;
using System.Collections.Generic;
public static class Program
public static void Main()
string[] lines = input.Split(new char[] {'\r', '\n', ',', ' '}, StringSplitOptions.RemoveEmptyEntries);
SortedDictionary<string, SortedSet<string>> items = new SortedDictionary<string, SortedSet<string>>();
for(int i = 0; i < lines.Length; i += 16) {
for(int j = 1; j <= 15; j++) {
items.Add(lines[i + j], lines[i]);
Console.WriteLine("~ The Curse - Final Puzzle numbers (grouped by number) ~");
foreach(var kvp in items) {
Console.WriteLine(kvp.Key);
foreach(string item in kvp.Value) {
public static bool Add(this SortedDictionary<string, SortedSet<string>> dict, string key, string value)
SortedSet<string> hashSet = null;
if(!dict.TryGetValue(key, out hashSet)) {
hashSet = new SortedSet<string>();
return hashSet.Add(value);