Problem:
List of Top 3 Hills

There is a data which provides heights (in meter) of mountains. The data is only for ten mountains.

Write a program which prints heights of the top three mountains in descending order.

Input

Height of mountain 1
Height of mountain 2
Height of mountain 3
.
.
Height of mountain 10

Constraints

0 ≤ height of mountain (integer) ≤ 10,000

Output

Height of the 1st mountain
Height of the 2nd mountain
Height of the 3rd mountain

Sample Input 1

1819
2003
876
2840
1723
1673
3776
2848
1592
922

Output for the Sample Input 1

3776
2848
2840

Sample Input 2

100
200
300
400
500
600
700
800
900
900

Output for the Sample Input 2

900
900
800

Solution in JAVA (judge verdict: Accepted)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main{

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		ArrayList<Integer> heights = new ArrayList<>();
		int x;
		for (int i = 0; i < 10; i++) {
			x = Integer.parseInt(br.readLine());
			if (0 <= x && x <= 10000) {
				heights.add(x);
			}
		}

		int[] top3 = getTop3(heights);
		for (int i = 0; i < top3.length; i++) {
			System.out.println(top3[i]);
		}
	}

	private static int[] getTop3(ArrayList<Integer> heights) {
		int[] top3 = new int[3];
		top3[0] = 0; // 1st highest
		top3[1] = 0; // 2rd highest
		top3[2] = 0; // 3rd highest
		for (int i = 0; i < heights.size(); i++) {
			int element = heights.get(i);
			if (element > top3[0]) {
				top3[2] = top3[1];
				top3[1] = top3[0];
				top3[0] = element;
			} else if (element > top3[1]) {
				top3[2] = top3[1];
				top3[1] = element;
			} else if (element > top3[2]) {
				top3[2] = element;
			}
		}
		return top3;
	}
}