시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 512 MB 3 3 2 100.000%

문제

0번 정점부터 N-1번 정점까지의 N개의 정점으로 구성된 트리가 주어진다.

각 정점들은 흰색 또는 검은색으로 색칠되어 있으며 각 색으로 칠해진 정점의 수가 최소 1개임이 보장된다.

이때, 트리에서 k(0 ≤ k < n)개의 간선을 선택해서 그 간선들을 없앨 수 있다. 그러면 (k+1)개의 정점 집합이 나누어진다. 각 집합이 모두 단 하나의 검은색으로 칠해진 정점을 가지도록 트리를 분할하는 경우의 수를 구하시오. 값이 매우 커질 수 있으므로 109+7로 나눈 나머지 값을 출력한다.

입력

첫 번째 줄에 정점의 개수 N(1≤N≤100000)이 주어진다.

둘째 줄에 N-1개의 정수 p0, p1, ... , pn-2(0 ≤ pi ≤ i)이 주어진다. 정점 pk와 정점 k+1 사이에 간선이 있음을 의미한다.

셋째 줄부터 줄에 각 정점의 색깔을 나타내는 N개의 정수 x0, x1, ... , xn-1이 주어진다. xi가 0이면 i번째 정점이 흰색임을 나타내고, 1이면 검은색임을 나타낸다.

출력

문제의 답을 109+7로 나눈 나머지 값을 출력한다.

예제 입력 1

3
0 0 
0 1 1

예제 출력 1

2