E. Отправьте дерево Чарли
ограничение по времени на тест
4 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Рождество постучало в дверь, и наш главный герой, Боб, готовил захватывающий подарок для своего давнего второго лучшего друга Чарли. Поскольку ему не нравится шоколад, он решил вместо этого украсить дерево. Дерево Боба можно представить в виде неориентированного связного графа с $$$n$$$ вершинами (пронумерованными от $$$1$$$ до $$$n$$$) и $$$n-1$$$ ребрами. Первоначально Боб поместил украшение с номером $$$i$$$ на вершину $$$i$$$ для каждого $$$1 \le i \le n$$$. Однако, поскольку такая простая композиция получилась некрасивой, он решил немного переместить украшения. Формально Боб сделал следующие шаги:

  • Сначала он выписал все $$$n-1$$$ ребра в некотором порядке.
  • Затем он рассмотрел все ребра один за другим в таком порядке. Для каждого ребра $$$(u, v)$$$ он поменял местами украшение вершины $$$u$$$ с украшением вершины $$$v$$$.

После этого Боб оказался довольным такой аранжировкой и пошел спать.

На следующее утро Боб просыпается, только чтобы узнать, что его прекрасная аранжировка разрушена! Прошлой ночью младший брат Боба, Бобо, бросил некоторые украшения на пол, когда играл с деревом. К счастью, украшения не были потеряны, поэтому Боб может восстановить дерево в кратчайшие сроки. Однако он полностью забыл, как дерево выглядело вчера. Поэтому, учитывая номера украшений, которые все еще на дереве, Боб хочет узнать количество возможных конфигураций дерева. Поскольку результат может быть довольно большим, Боб будет рад, если вы сможете вывести результат по модулю $$$1000000007$$$ ($$$10^9+7$$$). Обратите внимание, что, возможно, не существует никаких возможных конфигураций.

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

Первая строка содержит одно целое число $$$n$$$ ($$$2 \leq n \leq 500\,000$$$) — количество вершин.

Каждая из следующих $$$n - 1$$$ строк содержит два целых числа $$$u$$$ и $$$v$$$ ($$$1 \leq u, v \leq n$$$), которые обозначают, что существует ребро между вершинами $$$u$$$ и $$$v$$$. Гарантируется, что граф — дерево.

Последняя строка содержит $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$0 \le a_i \le n$$$). Для каждого $$$i$$$, $$$a_i = 0$$$ значит, что украшение вершины $$$i$$$ было сброшено. Иначе $$$a_i$$$ обозначает номер украшения, что находится в вершине $$$i$$$. Гарантируется, что каждый номер встречается не более одного раза.

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

Выведите количество конфигураций по модулю $$$1000000007$$$ ($$$10^9+7$$$).

Примеры
Входные данные
4
3 4
2 4
4 1
0 4 0 0
Выходные данные
2
Входные данные
5
1 2
2 4
3 4
5 4
0 0 0 0 0
Выходные данные
12
Входные данные
3
1 2
1 3
1 0 0
Выходные данные
0
Примечание

В первом примере возможными конфигурациями дерева являются $$$[2, 4, 1, 3]$$$ и $$$[3, 4, 2, 1]$$$.

Во втором примере обратите внимание, что есть $$$4! = 24$$$ возможных перестановок ребер, но возможны только $$$12$$$ различные финальные конфигурации.

В третьем примере легко увидеть, что украшение с номером $$$1$$$ не может оставаться в вершине $$$1$$$ после перестановок.