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 Scala (judge verdict: Accepted)

import java.util.Scanner
import scala.collection.mutable._
import scala.math.Ordering.Implicits._

object Main {

	def main(args: Array[String]): Unit = {
		val in = new Scanner(System.in)

		val map = Map.empty[String, List[Int]]
		while (in.hasNext) {
			var s = in.next
			var p = in.nextInt

			if (map.contains(s)) {
				map.put(s, p::map.get(s).get)
			} else {
				map.put(s, List(p))
			}
		}

		var outer = ListBuffer.empty[(String, List[Int])]
		map.foreach { item =>
			outer += item
		}
		outer = outer.sortWith(_ < _)

		outer.foreach { case (s, p) =>
			println(s)
			val pl = p.sorted
			pl.foreach { i =>
				if (i == pl.last){
					println(i)
				} else {
					print(i+" ")
				}
			}
		}
	}
}