Ограничение по времени: 2.000 секунд
Ограничение по памяти: 100.000 мегабайт
Для срочного задания Кириллу необходимо быстро собрать команду рейнджеров по офису.
В офисе есть n кабинетов, которые соединены n − 1 коридором. Из любого кабинета можно добраться по коридорам до любого другого. Иными словами, офис представляет из себя дерево, вершины которого соответствуют кабинетам, а ребра - коридорам. В каждом кабинете сидит ровно один сотрудник, в кабинете номер v сидит сотрудник, обладающий навыком cv. Всего есть m различных навыков, пронумерованных от 1 до m.
Кирилл хочет выбрать такой отряд рейнджеров, что для каждого из m навыков в этом отряде будет хотя бы один сотрудник с таким навыком. А также, если Кирилл возьмет в отряд сотрудников из кабинетов v и u, он также обязательно возьмет в отряд всех сотрудников, которые сидят в кабинетах, расположенных на простом пути между u и v.
Помогите Кириллу вычислить количество способов, которыми он может выбрать команду для решения задачи. Так как это число может быть большим, выведите остаток от деления этого числа на 998244353.
В первой строке даны два целых числа n и m - количество кабинетов и количество различных навыков (1 ≤ n ≤ 10000, 1 ≤ m ≤ 10).
В следующей строке даны n целых чисел ci - навыки спецагентов (1 ≤ ci ≤ m).
В следующих n − 1 строках даны по два целых числа ai и bi - номера кабинетов, соединенных i-м коридором (1 ≤ ai, bi ≤ n).
Гарантируется, что офис представляет из себя дерево.
Выведите одно целое число 竰 количество способов выбрать отряд спецагентов по модулю 998244353.
input | output |
---|---|
3 3 1 2 3 1 2 2 3 |
1 |
4 2 1 2 2 2 1 2 1 3 1 4 |
7 |
6 3 1 2 3 1 2 3 1 2 2 3 2 4 4 5 4 6 |
14 |