Produto dos dois maiores números

Crie uma função que receba um array de 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

Program.Product(new[] { 2, 3, 1, -1, 2 }) ➞ 6
// 3 × 2 = 6

Program.Product(new[] { -2, -2, -1, -1 }) ➞ 2
// Use -2 e -1, e não -1 duas vezes.

Program.Product(new[] { 8, 8, 8 }) ➞ 64
// Se houver apenas um valor distinto, eleve-o ao quadrado.

Program.Product(new[] { 2, 8, 8, 8 }) ➞ 16
// Use 8 uma vez e o próximo valor distinto, 2.

Observações

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