가장 잘 맞는 짝

서로 다른 정수 최대 1000개가 주어질 때, 곱의 십진수 자리가 123처럼 연속해 증가하는 두 수의 곱 중 최댓값을 구하고, 그런 쌍이 없으면 -1을 출력한다.

보통4구현완전 탐색수학정렬면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

도쿄에 있는 게임 회사에서 엔지니어로 일하고 있다. 이 회사는 해마다 여름에 전 직원이 참가하는 행사를 연다. 올해 행사는 도쿄에서 열리고, 나는 운영진으로 참가한다. 맡은 일은 참가자 전원이 동시에 즐기는 레크리에이션 게임을 기획하는 것이다.

여러 안을 검토한 끝에 규칙을 다음과 같이 정했다.

  • 게임을 시작하기 전에 참가자마다 양의 정수를 하나씩 나눠 준다.
  • 참가자는 다른 참가자와 짝을 이루고, 짝이 된 두 사람은 정수의 곱을 서로 비교한다.
  • 참가자는 게임이 끝나기 전까지 짝을 몇 번이든 바꿀 수 있지만, 동시에 두 명 이상과 짝을 이룰 수는 없다.
  • 게임이 끝난 시점에 곱이 가장 큰 짝이 이긴다.

나눠 준 정수에 대해서는 짝을 이루기 위한 조건이 하나 더 있다.

두 정수의 곱을 문자열로 보았을 때 숫자가 왼쪽에서 오른쪽으로 1씩 커지면서 이어져야 한다. 예를 들어 2, 23, 56789는 이 조건을 만족하지만 21, 334, 135, 89012는 만족하지 않는다.

규칙을 이렇게 정하고 나니 상황에 따라 곱이 같은 우승 짝이 여럿 나올 수도 있다는 점을 알았다. 그래도 정수 집합이 주어지면 두 정수의 곱 중 가장 큰 값이 얼마인지는 구할 수 있다.

참가자에게 나눠 줄 서로 다른 정수의 집합이 주어질 때, 위 규칙을 만족하는 두 정수의 곱 중 가장 큰 값을 구하라.

입력

입력은 테스트 케이스 하나로 이루어지며 형식은 다음과 같다.

N
a1 a2 ... aN

첫째 줄에는 게임 참가자 수를 나타내는 양의 정수 NN이 주어진다. NN11 이상 10001000 이하의 정수이다. 둘째 줄에는 참가자에게 나눠 준 수를 나타내는 양의 정수 NN개가 주어진다. i=1,2,,N1i = 1, 2, \dots, N-1에 대해 aia_iai+1a_{i+1} 사이에는 공백이 하나 있다. 모든 ii에 대해 1ai100001 \le a_i \le 10000이고, iji \ne j이면 aiaja_i \ne a_j이다.

출력

짝을 이루는 조건을 만족하는 두 정수의 곱 중 가장 큰 값을 출력한다. 짝을 이룰 수 있는 두 참가자가 없으면 1-1을 출력한다.