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 C++14 (GCC 5.4.1) (judge verdict: Runtime Error)

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int max(int a,int b){
	if(a>b){
		return a;
	}else{
		return b;
	}
}
int main(){
	int s=0,i[10000],a,b,c,d,e,m1=0,m2=0;
	bool j[10000],u[10000];
	cin>>a;
	for(b=0;b<a;b++){
		cin>>i[b];
	}
	for(b=0;b<10000;b++){
		j[b]=false;
		u[b]=false;
	}
	for(b=0;b<a;b++){
		for(c=0;c<b;c++){
		    if(i[b]==i[c]){
		    	j[b]=true;
		    	j[c]=true;
			}
	    }
	}
	for(b=0;b<a;b++){
		for(c=0;c<b;c++){
		   for(d=0;d<c;d++){
		        for(e=0;e<d;e++){
		             if((i[b]==i[c])&&(i[d]==i[c])&&(i[d]==i[e])){
		    	        u[b]=true;
		    	        u[c]=true;
		    	        u[d]=true;
		    	        u[e]=true;
			        }
	            }
	        }
	    }
	}
	for(b=0;b<a;b++){
		if(j[b]==true){
		    m1=max(m1,i[b]);
		}
	}
	for(b=0;b<a;b++){
		if((i[b]==m1)&&(u[b]==true)){
			cout<<m1*m1;
			return 0;
		}
	}
	for(b=0;b<a;b++){
		if((j[b]==true)&&(i[b]!=m1)){
		    m2=max(m2,i[b]);
		}
	}
	s=m1*m2;
	cout<<s;
    return 0;
}