Problem:
Book Index

Books are indexed. Write a program which reads a list of pairs of a word and a page number, and prints the word and a list of the corresponding page numbers.

You can assume that a word consists of at most 30 characters, and the page number is less than or equal to 1000. The number of pairs of a word and a page number is less than or equal to 100. A word never appear in a page more than once.

The words should be printed in alphabetical order and the page numbers should be printed in ascending order.

Input

word page_number
:
:

Output

word
a_list_of_the_page_number
word
a_list_of_the_Page_number
:
:

Sample Input

style 12
even 25
introduction 3
easy 9
style 7
document 13
style 21
even 18

Output for the Sample Input

document
13
easy
9
even
18 25
introduction
3
style
7 12 21

Solution in C# (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AOJ
{
	class Program
	{
		static void Main(string[] args)
		{
			var d = new SortedDictionary<string, List<int>>();
			var s = "";
			while ((s = Console.ReadLine()) != null)
			{
				var wn = s.Split(' ');
				if (!d.ContainsKey(wn[0]))
					d.Add(wn[0], new List<int>());
				d[wn[0]].Add(int.Parse(wn[1]));
			}
			foreach(var w in d)
			{
				Console.WriteLine(w.Key);
				w.Value.Sort();
				Console.WriteLine(string.Join("", w.Value.Select(i => i + " ").ToArray()).TrimEnd(' '));
			}
		}
	}
}