만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

2배 최대공약수

시간 제한2초메모리 제한1024 MB

요약
카드 N장에 적힌 수 x, y를 골라 2 * gcd(x, y)로 바꾸는 과정을 N-1번 반복합니다. 마지막에 남는 카드에 적힐 수의 최댓값을 구합니다.
난이도

보통10점 중 6점

유형
정수론, 수학, 비트 연산
정답자
아직 제출이 없습니다

문제

덱에 NN장의 카드가 있고, 카드에는 1번부터 NN번까지 번호가 붙어 있다. ii번 카드에는 양의 정수 AiA_i가 적혀 있다.

카드로 N−1N - 1번의 이동을 한다. 이동 한 번마다 덱에서 카드 두 장을 고른다. 고른 카드에 적힌 정수를 각각 xx, yy라고 하면, 두 카드를 덱에서 제거하고 2⋅gcd⁡(x,y)2 \cdot \gcd(x, y)가 적힌 새 카드를 덱에 넣는다. 여기서 gcd⁡(x,y)\gcd(x, y)는 xx와 yy의 최대공약수이다. 두 장을 빼고 한 장을 넣으므로, 이동 한 번에 덱의 카드는 한 장 줄어든다.

N−1N - 1번의 이동을 모두 마치면 카드는 한 장만 남는다. 마지막 카드에 적힌 정수의 최댓값을 구하여 출력한다.

입력

첫 줄에 카드의 수 NN(2≤N≤100 0002 \le N \le 100\,000)이 주어진다. 다음 줄에는 NN개의 정수 A1,A2,…,ANA_1, A_2, \ldots, A_N(1≤Ai≤1091 \le A_i \le 10^9)이 주어진다. AiA_i는 ii번 카드에 적힌 수이다.

출력

마지막 카드에 적힌 정수의 최댓값을 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    3
    2 4 6
    
    예상 출력
    8
    
  2. 예제 2

    입력
    3
    3 5 7
    
    예상 출력
    2
    
  3. 예제 3

    입력
    4
    9 9 9 9
    
    예상 출력
    36
    
  4. 예제 4

    입력
    5
    10 100 1000 10000 100000
    
    예상 출력
    160