Нам дано дерево з ~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
Коментарі