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{
	
	public static void main(String... args){
		Map<String, List<Integer>> map = new TreeMap<>();
		
		Scanner sc = new Scanner(System.in);
		while(sc.hasNextLine()){
			String line = sc.nextLine();
			if(line.equals("end")) break;
			String word = line.split(" ")[0];
			int page = Integer.parseInt(line.split(" ")[1]);
			List<Integer> pageList = map.getOrDefault(word, new ArrayList<>());
			pageList.add(page);
			map.put(word, pageList);
		}
		sc.close();
		
		for(Map.Entry<String, List<Integer>> entry: map.entrySet()){
			System.out.println(entry.getKey());
			entry.getValue().sort(Comparator.comparing(Integer::intValue));
			for(int i = 0; i < entry.getValue().size()-1; i++){
				System.out.print(entry.getValue().get(i) + " ");
			}
			System.out.println(entry.getValue().get(entry.getValue().size()-1));
		}
	}
}