신장 트리
시간 제한8초메모리 제한1024 MB
각 정점 쌍 i, j를 gcd(a_i, a_j)개의 서로 다른 간선으로 잇는 그래프에서 신장 트리의 개수를 10^9+7로 나눈 나머지로 구합니다.
문제
길이가 인 정수 수열 이 주어진다. 이 수열로 정점이 개인 무방향 그래프를 만든다. 서로 다른 두 정점 와 ()는 개의 서로 구별되는 간선으로 연결된다. 이 그래프의 신장 트리 개수를 구하라. 두 신장 트리는 한쪽에만 들어 있는 간선이 있으면 서로 다른 트리로 본다. 답이 매우 클 수 있으므로 로 나눈 나머지를 출력한다.
입력
첫째 줄에 정수 ()이 주어진다. 이는 수열의 길이이자 그래프의 정점 개수이다. 둘째 줄에 정수 ()이 주어진다.
출력
그래프의 신장 트리 개수를 로 나눈 나머지를 한 줄에 출력한다.
힌트
첫 번째 예제의 그래프는 아래 그림과 같다.

이 그래프의 서로 다른 신장 트리는 정확히 24개이다.