카드 모두 잇기

두 카드 중 큰 수를 작은 수로 나눈 나머지를 비용으로 삼아 모든 카드를 연결할 때 전체 비용을 최소화합니다.

어려움8최소 신장 트리정수론유니온 파인드아직 제출이 없습니다시간 제한5초메모리 제한768 MB

문제

다니엘은 사탕 한 봉지와 카드 NN장을 가지고 있다. 카드마다 양의 정수 PiP_i가 하나씩 적혀 있다.

사탕을 먹던 다니엘은 놀이를 하나 떠올렸다. 적힌 수가 aabb인 카드 두 장을 끈으로 묶을 수 있고, 한 번 묶을 때마다 사탕을 min(amodb, bmoda)\min(a \bmod b,\ b \bmod a)개 먹어야 한다. xmodyx \bmod yxxyy로 나눈 나머지이다.

다니엘은 카드 한 장을 집어 올리면 나머지 카드가 모두 딸려 올라오도록 카드를 묶으려고 한다. 카드 한 장은 다른 카드 몇 장과도 직접 묶을 수 있다. 몸매를 신경 쓰는 다니엘은 사탕을 많이 먹고 싶지 않다.

모든 카드가 하나로 이어지도록 묶을 때 먹어야 하는 사탕 개수의 최솟값을 구하라.

입력

첫째 줄에 양의 정수 NN이 주어진다. (1N1051 \le N \le 10^5)

다음 NN개의 줄에 카드에 적힌 양의 정수 PiP_i가 한 줄에 하나씩 주어진다. (1Pi1071 \le P_i \le 10^7)

출력

모든 카드를 하나로 잇기 위해 먹어야 하는 사탕 개수의 최솟값을 첫째 줄에 출력한다.

힌트

첫 번째 예제에서 다니엘은 첫째 카드와 둘째 카드를 묶어 사탕을 0개 먹고, 둘째 카드와 셋째 카드를 묶어 0개를 먹고, 첫째 카드와 넷째 카드를 묶어 1개를 먹는다. 이렇게 하면 사탕 1개로 카드 네 장이 모두 이어진다.