정점 N개로 이루어진 트리에서 돈이 자란다. 정점에는 0번부터 N−1번까지 번호가 붙어 있고, 0번 정점이 루트다. 0번을 제외한 모든 정점 i에는 부모 p(i)가 있으며 p(i)<i를 만족한다. 처음에 정점 i에는 화폐 v(i)단위가 들어 있다.
어떤 조직이 이 트리에 연산 Q개를 수행한다. 각 연산은 두 단계로 이루어진다.
각 연산의 2단계 답을 구하라.
제한은 다음과 같다.
첫째 줄에 정점의 개수 N이 주어진다. 다음 N−1개의 줄에는 트리의 간선 하나를 나타내는 두 정수 p(i)와 i가 공백으로 구분되어 주어진다. 다음 줄에는 각 정점의 처음 금액 v(0),…,v(N−1)이 공백으로 구분되어 주어진다.
다음 줄에는 연산의 개수 Q가 주어진다. 이어지는 Q개의 줄에는 연산 하나가 정수 아홉 개로 주어지며, 순서는 K, x(1), y(1), A, B, C, D, u, v이다 (0≤A,B,C,D<1000000007). 직접 주어지는 값은 x(1)과 y(1)뿐이고, 2≤i≤K인 나머지는 다음 식으로 만든다.
x(i)=(A⋅x(i−1)+B)modN
y(i)=(C⋅y(i−1)+D)mod1000000007
Q개의 줄을 출력한다. j번째 줄에는 j번째 연산의 2단계 답을 출력한다. 1단계에서 더한 금액은 정점에 그대로 남으므로, 각 연산은 앞선 연산의 1단계와 자기 자신의 1단계를 모두 반영한 상태에서 답을 계산한다.
답은 32비트 정수의 범위를 넘을 수 있다.
첫 번째 예제의 연산 1은 A=C=1, B=D=0이므로 정점 1에 값 1을 1000번 더한다. 0번과 2번을 잇는 경로는 정점 0, 1, 2를 지나고, 세 정점에 든 금액의 합은 1006이다.
연산 2에서는 x(1)=0, y(1)=5, x(2)=1, y(2)=12가 되고, 2번과 3번을 잇는 경로는 트리의 정점을 모두 지난다.
연산 3은 K=1이므로 A, B, C, D를 쓰지 않는다.