신경증 네트워크

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

문제

이 문제에서 신경망은 간선마다 가중치가 붙은 루트 있는 트리다. 신호는 잎 노드에서 시작해 루트 쪽으로 연쇄적으로 흐른다. 각 노드는 자신의 상류 이웃이 보낸 값으로 출력값을 계산해서 하류 이웃 하나에게 넘긴다. 어떤 노드의 출력값은 상류 이웃 각각의 출력값에 그 이웃에서 이 노드로 들어오는 간선의 가중치를 곱한 뒤 모두 더한 값이다. 상류 이웃이 없는 노드가 잎 노드이고, 잎 노드의 출력값은 항상 1이다. 이 문제에 나오는 신경망에는 최종 출력 노드(루트 노드)가 정확히 하나 있다.

신경망은 가끔 고장 나서 흔히 말하는 신경증 네트워크가 된다. 정신과 의사로 두 번째 경력을 시작할 기회다. 머릿속 신경망이 신경증에 걸린 사람이 방금 찾아왔다. 이 사람의 신경망 출력값이 짝수이면 그 사람은 발작을 일으켜 새끼 고양이에게 불을 지른다. 그래서 이 사람이 안전한지 미리 알아내는 일이 중요하다. 안전하면 신경망 출력값을 1,000,000,007로 나눈 나머지를 출력한다. 방화복을 입지 않은 새끼 고양이 곁에 두기 어려운 사람이라면 따옴표 없이 FREAK OUT을 출력한다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스의 첫 줄에는 트리의 노드 수 NN이 주어진다. 다음 줄에는 N1N - 1개의 정수 a1,a2,,aN1a_1, a_2, \dots, a_{N-1}이 주어지고, aia_i는 ID가 ii인 노드의 하류 이웃이다. 그다음 줄에는 N1N - 1개의 정수 w1,w2,,wN1w_1, w_2, \dots, w_{N-1}이 주어지고, wiw_i는 ID가 ii인 노드에서 나가는 연결의 가중치다. ID가 0인 노드는 항상 출력 노드다.

  • 0<T500 < T \le 50
  • 0<N100000 < N \le 10000
  • 0<wi100 < w_i \le 10
  • 0ai<N0 \le a_i < N
  • 주어지는 그래프는 항상 트리다.

N=1N = 1인 테스트 케이스에서는 정수 두 줄이 모두 비어 있다. 입출력 양이 많으므로 버퍼를 쓰는 빠른 입력 방법으로 읽는다.

출력

테스트 케이스마다 한 줄씩 출력한다. 출력 노드의 최종 값이 짝수이면 따옴표 없이 FREAK OUT을 출력한다. 홀수이면 그 값을 1,000,000,007로 나눈 나머지를 출력한다.