정수 그래프
시간 제한1초메모리 제한512 MB
n개의 정수가 주어질 때, 각 수를 최소 소인수로 나눈 값과 연결한 그래프에서 한 값을 제거했을 때 남는 쌍별 최단 경로 거리 합의 최솟값을 구한다.
문제
Alice와 Bob은 "정수 그래프"를 이용한 놀이를 즐긴다.
"정수 그래프"는 노드와 간선의 수가 무한한 방향성이 없는 그래프이고, 다음과 같이 정의한다.
-
노드: 모든 양의 정수 에 대응되는 고유한 노드가 존재한다. 따라서 임의의 노드는 해당 노드의 정수로 나타낼 수 있다.
-
간선: 어떤 노드 와 가 아래 조건 중 하나를 충족하면 둘 사이에 간선이 존재한다.
- 라면: 의 이 아닌 약수 중 가장 작은 수가 일 때, 라면 두 노드 사이에 간선이 존재한다. 해당 간선의 길이는 이다.
- 라면: 의 이 아닌 약수 중 가장 작은 수가 일 때, 라면 두 노드 사이에 간선이 존재한다. 해당 간선의 길이는 이다.
-
일반적인 그래프와 마찬가지로 최단 경로를 정의하며, 는 두 노드 , 사이의 최단 경로의 길이를 나타낸다. 이때 길이는 해당 최단 경로에 속한 간선의 길이의 총합이다.
예를 들어, 아래 그림은 "정수 그래프"의 일부를 보여 준다. 가령 노드 과 사이에는 길이 인 간선이 존재하고, 노드 와 사이에는 길이 인 간선이 존재한다.

두 아이는 정수 그래프를 이용해서 아래와 같은 놀이를 하기로 했다:
- 먼저 Alice가 개의 양의 정수 를 고른다 (같은 정수를 여러 번 고를 수도 있다). 그리고 를 다음과 같이 정의한다: (D = \sum_{1 \le i < j \le n} dist(v_i, v_j)) 즉, D값은 Alice가 고른 정수들 각 쌍에 대하여 그에 해당하는 두 노드 사이의 최단 경로 길이의 총합이다.
- 다음으로, Bob이 개의 정수 중 하나를 빼고, 나머지 개의 정수에 대하여 마찬가지로 값을 새로 계산한다. 즉, 이상 이하의 정수 중 번째 정수를 빼고, 새로 계산할 값을 라고 한다면: ( E(k) = \sum_{1 \le i < j \le n, i \ne k, j \ne k} dist(v_i, v_j) )가 된다. 이때 Bob은 값이 최소가 되도록 하고 싶다.
예를 들어 Alice가 , , 를 골랐을 경우를 살펴보자.
- , , 이 되어 이다.
- Bob이 을 제거하면 만 남게 되어 이다.
- Bob이 을 제거하면 만 남게 되어 이다.
- Bob이 을 제거하면 만 남게 되어 이다.
입력으로 Alice가 선택한 개의 정수가 주어졌을 때, Bob이 달성할 수 있는 의 최솟값을 구해보자.
입력
첫 줄에 테스트 케이스의 수 가 주어진다.
각 테스트 케이스의 입력은 두 줄에 걸쳐 주어진다. 첫 줄에 이 주어지고 둘째 줄에 Alice가 고른 개의 정수 이 공백으로 구분되어 주어진다.
출력
각 테스트 케이스의 정답을 각 줄에 출력한다.