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: Runtime Error)

/*問題文
太さが無視できる棒が N 本あります． i 番目の棒の長さは Ai です．
すぬけ君は，これらの棒から 4 本の異なる棒を選び，それらの棒を辺として長方形（正方形を含む）を作りたいです． 作ることができる最大の長方形の面積を求めてください．

制約
4≤N≤105
1≤Ai≤109
Ai は整数
入力
入力は以下の形式で標準入力から与えられる。

N
A1 A2 ... AN
*/

#include <stdio.h>

int main(){
  int N, i, j;
  int A[105];
  int s;
  //int hen1, hen2;
  int B[105];
  int max1, max2;

  scanf("%d", &N);
  for(i=0; i< N; i++){
    scanf("%d",&A[i]);
  }

for(i = 0; i<N; i++){
  B[i]=0;
}

  for(i = 0; i<N-1; i++){
    for(j = i+1; j<N; j++){
      if(A[i]==A[j]){
        B[i] = A[i];
        A[i]=0;
        A[j]=0;
        break;
      }
    }
  }
/*
for(i = 0; i< N; i++){
  printf("%d",B[i]);
}
*/

  if(B[0]>=B[1]){
    max1 = B[0];
    max2 = B[1];
  }else{
    max1 = B[1];
    max2 = B[0];
  }

  for(i =2; i< N; i++){
    if(B[i]>max1){
      max2 = max1;
      max1 = B[i];
    }else if(B[i]>max2){
      max2 = B[i];
    }
  }

//printf("\n max1=%d, max2=%d\n",max1,max2);
  s = max1 * max2;
  printf("%d\n", s);

  return 0;
}