최대공약수 하나 빼기

한 수를 제거했을 때 남은 수들의 최대공약수가 최대가 되도록 하되, 그 값이 제거한 수의 약수가 아니어야 한다.

보통7정수론누적 합그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

정수 A가 B로 나누어떨어지면 B는 A의 약수이고 A는 B의 배수이다.

최대공약수는 여러 정수의 공통된 약수 중 가장 큰 수이다. 예를 들어 12와 8의 공약수는 1, 2, 4이고 그중 가장 큰 4가 12와 8의 최대공약수이다.

N개의 정수 중에서 수 K 하나를 뺐을 때 나머지 N-1개의 최대공약수가 가장 커지는 경우를 찾으려고 한다. 단, 나머지 수의 최대공약수는 K의 약수가 되면 안 된다.

예를 들어 정수 8, 12, 24, 36, 48에서 8을 빼면 나머지 12, 24, 36, 48의 최대공약수는 12이다. 12는 뺀 수 8의 약수가 아니므로 답이 될 수 있다. 다른 수를 빼서는 최대공약수가 12보다 커질 수 없다.

반면 8, 12, 20, 32, 36은 어떤 수를 빼더라도 나머지 수의 최대공약수가 뺀 수의 약수가 되므로 답이 없다.

N개의 수가 주어질 때 정수 하나를 빼서 만들 수 있는 가장 큰 최대공약수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정수의 개수 N이 주어진다. (4N10000004 \le N \le 1\,000\,000)

그다음에 N개의 수가 공백이나 줄바꿈으로 구분되어 주어진다. 각 수는 20000000002\,000\,000\,000 이하의 자연수이다.

출력

첫째 줄에 정수 하나를 빼서 만들 수 있는 가장 큰 최대공약수와 뺀 수를 공백 하나로 구분하여 출력한다.

뺀 수를 K라고 할 때 나머지 수의 최대공약수는 K의 약수가 되면 안 된다.

조건을 만족하는 방법이 없으면 -1을 출력한다.