최대공약수 합

n개의 수로 이루어진 중복집합을 k개의 비어 있지 않은 그룹으로 나눌 때 각 그룹의 최대공약수 합을 최대로 만드는 값을 k = 1부터 n까지 모두 구한다. n은 500000 이하이고 각 수는 10^12 이하다.

어려움9정수론그리디수학정렬아직 제출이 없습니다시간 제한2초메모리 제한1024 MB

문제

정수 nn개로 이루어진 다중집합이 주어진다. 같은 수가 여러 번 나올 수 있다. 이 다중집합을 비어 있지 않은 kk개의 그룹으로 나누면 모든 원소는 정확히 한 그룹에 속한다. 그룹마다 원소의 최대공약수를 구한 다음, 구한 값을 모두 더한다.

k=1,2,,nk = 1, 2, \ldots, n 각각에 대해 이렇게 얻을 수 있는 합의 최댓값을 구하라.

입력

첫째 줄에 다중집합의 크기 nn이 주어진다 (1n5000001 \leq n \leq 500\,000).

둘째 줄에 수열을 이루는 양의 정수 nn개가 주어진다. 각 정수는 101210^{12} 이하이다.

출력

nn개의 줄을 출력한다. ii번째 줄에는 다중집합을 k=ik = i개의 그룹으로 나눌 때 최대공약수의 합이 가질 수 있는 최댓값을 출력한다.

힌트

수열이 10,9,10,310, 9, 10, 3이면 k=2k = 2의 최적 분할은 (10,10)(10, 10)(9,3)(9, 3)이고 합은 10+3=1310 + 3 = 13이다. k=3k = 3의 최적 분할은 (10)(10), (10)(10), (9,3)(9, 3)이고 합은 2323이다.