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

import java.util.*;
public class Main {
	static Scanner sc = new Scanner(System.in);
	static Map <String, ArrayList<Integer>>map = new HashMap <String, ArrayList<Integer>>();
	static PriorityQueue<String> queue = new PriorityQueue<String>();
	static String word;
	static int page;
	public static void main(String[] args) {
		while(read()){
			
		}
		solve();
	}

	static boolean read(){
		if(!sc.hasNext())return false;
		word = sc.next();
		page = sc.nextInt();
		if(map.containsKey(word)){
			map.get(word).add(page);
		}else{
			queue.add(word);
			ArrayList<Integer>list = new ArrayList<Integer>();
			list.add(page);
			map.put(word, list);
		}
		return true;
	}
	
	static void solve(){
		while(!queue.isEmpty()){
			String w = queue.poll();
			ArrayList<Integer>list = map.get(w);
			System.out.println(w);
			Collections.sort(list);
			boolean flag = true;
			for(int i : list){
				if(!flag)System.out.print(" ");
					flag = false;
					System.out.print(i);
			}
			System.out.println();
		}
	}
}