Problem:
Score : 300 points

Problem Statement

We have N sticks with negligible thickness.
The length of the i-th stick is A_i.

Snuke wants to select four different sticks from these sticks and form a rectangle (including a square), using the sticks as its sides.
Find the maximum possible area of the rectangle.

Constraints

4 \leq N \leq 10^5

1 \leq A_i \leq 10^9

A_i is an integer.

Input

Input is given from Standard Input in the following format:

N
A_1 A_2 ... A_N

Output

Print the maximum possible area of the rectangle.
If no rectangle can be formed, print 0.

Sample Input 1

6
3 1 2 4 2 1

Sample Output 1

2

1 \times 2 rectangle can be formed.

Sample Input 2

4
1 2 3 4

Sample Output 2

0

No rectangle can be formed.

Sample Input 3

10
3 3 3 3 4 4 4 5 5 5

Sample Output 3

20

Solution in Java8 (OpenJDK 1.8.0) (judge verdict: Wrong Answer)

import java.util.*;
public class Main {
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
	//	int[] data = new int[N+1];
		Map data2 = new TreeMap();
		int max = 0;
		int max2 = 0;
		boolean first = true;
		for(int i = 0 ; i<N; i++){
			int input = sc.nextInt();
			if(data2.containsKey(input)){
				int v = (int)data2.get(input);
				data2.replace(input, v, v+1);
			}
			else{
				data2.put(input, 1);
			}
			if((int)data2.get(input) >= 2){
				int temp = max;
				max = input;
				if(!first){
					if(temp != max) max2 = temp;
					else if(temp == max && (int)data2.get(input) >= 4){
						max2 = temp;
					}
				}
				first = false;
			}
			
		/*	if(data[input]>=2){
				int temp = max;
				max = input;
				if(!first){
					if(temp != max) max2 = temp;
					else if(temp == max && data[input] >= 4){
						max2 = temp;
					}
				}
				first = false;
			}*/
		}
	//	System.out.println(max+"  "+max2);
		long res = max*max2;
		
		System.out.println(res);
	}
}