Produto dos dois maiores valores distintos

Crie uma função que receba um array de números inteiros e retorne o produto dos dois maiores valores distintos. Se o array contiver apenas um valor distinto, eleve esse valor ao quadrado.

Quando o valor máximo aparece mais de uma vez, ele só pode ser usado uma vez se houver outro valor distinto.

Exemplos

product([2, 3, 1, -1, 2]) ➞ 6
// 3 × 2 = 6

product([-2, -2, -1, -1]) ➞ 2
// Use -2 e -1, e não -1 duas vezes.

product([8, 8, 8]) ➞ 64
// Como há apenas um valor distinto, eleve-o ao quadrado.

product([2, 8, 8, 8]) ➞ 16
// Use 8 uma vez e o próximo valor distinto, 2.

Notas

  • Todos os valores de entrada são números inteiros.
  • Os valores podem ser positivos ou negativos.