Надіслати розв'язок

Бали: 32,00 (partial)
Time limit: 2.0s
Memory limit: 256M
Input: stdin
Output: stdout

Author:
Problem type

Нам дано дерево з ~N~ вершинами, позначеними різними додатніми цілими числами від 1 до ~N~. Додатково дано ~M~ пар вершин з дерева у вигляді ~(a_{1}, b_{1}),(a_{2}, b_{2}), \ldots,(a_{M}, b_{M})~. Потрібно направити кожне ребро дерева так, щоб для кожної заданої пари вершин ~(a_{i}, b_{i})~ існував шлях від ~a_{i}~ до ~b_{i}~ або від ~b_{i}~ до ~a_{i}~. Скільки різних способів це зробити? Оскільки відповідь може бути досить великою, визначте її за модулем ~10^{9}+7~.

Input

Перший рядок вхідних даних містить додатні цілі числа ~N~ та ~M(1 \leq N, M \leq 3 \cdot 10^{5})~, кількість вершин у дереві та кількість заданих пар вершин відповідно.

Кожен з наступних ~N-1~ рядків містить два додатніх цілих числа, номери вершин, з'єднаних ребром.

~i~-й з наступних ~M~ рядків містить два різних додатніх цілих числа ~a_{i}~ та ~b_{i}~, номери вершин з ~i~-ї пари вершин. Усі пари вершин будуть взаємно різними.

Output

Ви повинні вивести один рядок, що містить загальну кількість різних способів направити ребра дерева, які задовольняють вимогу з умови, за модулем ~10^{9}+7~.

У тестових випадках вартістю ~20\%~ від загальної кількості балів задане дерево буде ланцюгом. Іншими словами, вершина ~i~ буде з'єднана ребром з вершиною ~i+1~ для всіх ~i<N~.</p>

У додаткових тестових випадках вартістю ~40\%~ від загальної кількості балів буде виконуватися ~N, M \leq 5 \cdot 10^{3}~.

Sample Input 1

4 1
1 2
2 3
3 4
2 4

Sample Output 1

4

Sample Input 2

7 2
1 2
1 3
4 2
2 5
6 5
5 7
1 7
2 6

Sample Output 2

8

Sample Input 3

4 3
1 2
1 3
1 4
2 3
2 4
3 4

Sample Output 3

0

Коментарі

Please read the guidelines before commenting.


Ще немає коментарів.