Это сложная версия задачи. Единственное различие простой и сложной версии в количестве запросов.
Поликарп вырастил дерево из \(n\) вершин. Напоминаем, что деревом из \(n\) вершин называется неориентированный связный граф из \(n\) вершин и \(n-1\) ребра, не содержащий циклов.
Он называет множество вершин проходимым, если существует такой путь в дереве, который проходит через каждую вершину этого множества, не проходя по какому-либо ребру дважды. Путь может посещать другие вершины (не из этого множества).
Иными словами, множество вершин называется проходимым, если существует простой путь, который проходит по всем вершинам этого множества (и, возможно, каким-то другим).
Например для дерева ниже множества \(\{3, 2, 5\}\), \(\{1, 5, 4\}\), \(\{1, 4\}\) проходимы, а \(\{1, 3, 5\}\), \(\{1, 2, 3, 4, 5\}\) — нет.
Поликарп просит вас ответить на \(q\) запросов. Каждый запрос является множеством вершин. Для каждого запроса вам необходимо определить проходимо ли соответствующее множество вершин.
Выходные данные
Выведите \(q\) строк, каждая из которых содержит ответ на соответствующий запрос. В качестве ответа выведите «YES», если множество проходимо, и «NO» в противном случае.
Вы можете выводить ответ в любом регистре (например, строки «yEs», «yes», «Yes» и «YES» будут распознаны как положительный ответ).