트리와 수열

아직 제출이 없습니다시간 제한2초메모리 제한1024 MB

문제

NN개의 정점으로 구성된 트리가 있다. 각 정점은 11번부터 NN번까지 번호가 매겨져 있다. 또한 N1N-1개의 음이 아닌 정수로 이루어진 수열이 있다.

트리의 간선에 수열의 원소들을 하나씩 대응시켜 가중치를 매길 것이다. 이때 가능한 dist(i,j){\sum dist(i,j)} (1i<jN)(1 \leq i < j \leq N)의 최솟값을 109+710^9+7로 나눈 나머지를 구하려고 한다.

dist(i,j)dist(i,j)는 트리의 ii번 정점과 jj번 정점 사이의 단순 경로 상 가중치의 합을 의미한다.

입력

첫 번째 줄에 정점의 개수 NN이 주어진다. (2N100 000)(2 ≤ N ≤ 100\ 000)

이후 N1N-1개의 줄에 걸쳐 트리의 각 간선이 연결하는 두 정점 u,vu, v가 공백으로 구분하여 주어진다. (1u,vN)(1 \leq u, v \leq N)

다음 줄에 수열의 원소 a_1,,a_N1a\_1,\cdots,a\_{N-1}이 공백으로 구분하여 주어진다. (1a_i109;(1 ≤ a\_i ≤ 10^9; 모든 a_ia\_i 는 정수))

출력

dist(i,j){\sum dist(i,j)} (1i\<jN)(1 \leq i\<j \leq N)의 최솟값을 109+710^9+7로 나눈 나머지를 출력하라.