A. Очень длинное условие
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Лёша увидел во сне следующую задачу. Дано дерево (неориентированный связный граф без циклов). Нужно посчитать количество способов покрасить вершины графа в не более чем $$$k$$$ цветов так, чтобы любые две соединённые ребром вершины имели разный цвет. Два способа считаются различными, если найдётся хотя бы одна вершина, которая будет покрашена в разные цвета.

Проснувшись, Лёша захотел решить эту задачу. Помогите ему.

Входные данные

В первой строке вводятся два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le n, k \le 10^6$$$) — количество вершин в дереве и количество цветов.

В следующих $$$n - 1$$$ строках описываются рёбра дерева. В $$$i$$$-й строке вводится целое число $$$p_i$$$ ($$$1 \le p_i \lt i$$$) — номер предка вершины с номером $$$i$$$ (для $$$i$$$ от $$$2$$$ до $$$n$$$ включительно).

Вершины пронумерованы с $$$1$$$ до $$$n$$$, а корень дерева находится в вершине $$$1$$$.

Выходные данные

В единственной строке выведите количество способов покрасить вершины данного дерева в $$$k$$$ цветов по модулю $$$10^9 + 9$$$.

Примеры
Входные данные
4 3
1
1
3
Выходные данные
24
Входные данные
10 35318
1
2
2
2
1
5
5
6
2
Выходные данные
402784325
Примечание

Объём входных данных в данной задаче велик, поэтому при написании решения настоятельно рекомендуется использовать оптимизации ввода/вывода.