n개의 수로 이루어진 중복집합을 k개의 비어 있지 않은 그룹으로 나눌 때 각 그룹의 최대공약수 합을 최대로 만드는 값을 k = 1부터 n까지 모두 구한다. n은 500000 이하이고 각 수는 10^12 이하다.
정수 nnn개로 이루어진 다중집합이 주어진다. 같은 수가 여러 번 나올 수 있다. 이 다중집합을 비어 있지 않은 kkk개의 그룹으로 나누면 모든 원소는 정확히 한 그룹에 속한다. 그룹마다 원소의 최대공약수를 구한 다음, 구한 값을 모두 더한다.
k=1,2,…,nk = 1, 2, \ldots, nk=1,2,…,n 각각에 대해 이렇게 얻을 수 있는 합의 최댓값을 구하라.
첫째 줄에 다중집합의 크기 nnn이 주어진다 (1≤n≤500 0001 \leq n \leq 500\,0001≤n≤500000).
둘째 줄에 수열을 이루는 양의 정수 nnn개가 주어진다. 각 정수는 101210^{12}1012 이하이다.
nnn개의 줄을 출력한다. iii번째 줄에는 다중집합을 k=ik = ik=i개의 그룹으로 나눌 때 최대공약수의 합이 가질 수 있는 최댓값을 출력한다.
수열이 10,9,10,310, 9, 10, 310,9,10,3이면 k=2k = 2k=2의 최적 분할은 (10,10)(10, 10)(10,10)과 (9,3)(9, 3)(9,3)이고 합은 10+3=1310 + 3 = 1310+3=13이다. k=3k = 3k=3의 최적 분할은 (10)(10)(10), (10)(10)(10), (9,3)(9, 3)(9,3)이고 합은 232323이다.