헛간 색칠하기

일부 정점의 색이 미리 정해진 트리에서 인접한 두 정점이 다른 색이 되도록 3가지 색으로 칠하는 경우의 수를 10^9+7로 나눈 나머지를 구한다.

보통6트리동적 계획법DFS조합론면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

농부 존의 농장에는 헛간이 NN개 있다 (1N1051 \le N \le 10^5). 그중 일부는 이미 칠해져 있고 나머지는 아직 칠하지 않았다. 존은 남은 헛간을 모두 칠해서 농장의 헛간이 전부 색을 갖게 하려고 하는데, 쓸 수 있는 페인트는 세 가지 색뿐이다. 게다가 존이 아끼는 소 베시는 통로로 바로 이어진 두 헛간의 색이 같으면 헷갈려 하므로, 그런 상황이 생기지 않게 해야 한다.

NN개의 헛간을 잇는 통로에는 사이클이 없다. 즉 어떤 두 헛간을 잡아도 한쪽에서 다른 쪽으로 가는 통로의 순서는 많아야 한 가지다.

아직 칠하지 않은 헛간을 칠하는 방법은 몇 가지인가?

입력

첫째 줄에 헛간의 수 NN과 이미 칠해진 헛간의 수 KK가 주어진다 (0KN0 \le K \le N).

다음 N1N-1개 줄에는 헛간 xx와 헛간 yy를 바로 잇는 통로를 나타내는 두 정수 xx, yy가 주어진다 (1x,yN1 \le x, y \le N, xyx \neq y).

다음 KK개 줄에는 헛간 bb가 색 cc로 칠해져 있다는 뜻의 두 정수 bb, cc가 주어진다 (1bN1 \le b \le N, 1c31 \le c \le 3). 같은 헛간 번호는 두 번 이상 나오지 않는다.

출력

바로 이어진 두 헛간의 색이 서로 다르도록 남은 헛간을 칠하는 방법의 수를 109+710^9 + 7로 나눈 나머지를 출력한다.