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 (GCC 5.4.1) (judge verdict: Time Limit Exceeded)

#include<stdio.h>
#include<string.h>
int main(void) {
	int N;
	scanf("%d", &N);
	int A[100000];
	for (int i = 0; i < N; i++) {
		scanf("%d", &A[i]);
	}

	int a;

	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N - 1 - i; j++) {
			if (A[j] < A[j + 1]) {
				a = A[j];
				A[j] = A[j + 1];
				A[j + 1] = a;
			}
		}
	}

	int count_1 = 0, count_2 = 0;
	int b, c;

	for (int i = 0; i < N; i++) {
		if (A[i] == A[i + 1]&&count_1!=1) {
			b = A[i];
			A[i] = 0;
			A[i + 1] = 0;
			count_1++;
		}else if (count_1 == 1) {
			if (A[i] == A[i + 1]) {
				c = A[i];
				count_2++;
				break;
			}
		}
	}
	if (count_1 == 0) {
		printf("%d", 0);
	}
	else {
		printf("%d",b*c );
	}

		return 0;
}