import math # エラトステネスの篩 def prime(n): is_prime = [True] * (n + 1) is_prime[0], is_prime[1] = False, False for i in range(2, int(math.sqrt(n)) + 1): if is_prime[i]: for j in range(2 * i, n + 1, i): is_prime[j] = False return is_prime def factorization(n): arr = defaultdict(int) temp = n for i in prime_list: if temp%i==0: cnt=0 while temp%i==0: cnt+=1 temp //= i arr[i] = cnt if temp!=1: arr[temp] = 1 if arr==[]: arr[n] = 1 return arr def dfs(v, p): ret = factorization(A[v]) for nv in G[v]: if nv==p: continue tmp = dfs(nv, v) if len(ret)