Meow
시간 제한0.5초메모리 제한1024 MB
값이 1부터 L까지 순서대로 있는 노드 열이 조상-자손 관계를 이루는 경우의 수를 세고, 값이 바뀔 때마다 그 수의 가중합을 구합니다.
문제
CS 동아리에 새로운 포켓몬 Meow2가 있다. 나무를 좋아하는 Meow2에게는 정점이 개인 루트 트리가 하나 있다. 정점은 부터 까지 번호가 매겨져 있고, 루트는 번 정점이다. 0번이 아닌 정점 의 부모 번호는 보다 작다. 각 정점에는 이상 이하의 정수 값이 하나씩 붙어 있다.
Meow2는 길이가 인 배열 도 가지고 있다. 그는 트리에서 가 나타나는 횟수를 세고 싶어 한다. 정확히는, 정점 의 값이 이고 인 모든 에 대해 정점 가 정점 의 조상인 수열 의 개수를 센다.
Meow2는 처음 트리를 계속 바꾼다. 길이가 인 변경 배열 가 있다. 번째 단계()에서 정점 의 값을 로 바꾼다. 여기서 이다.
변경할 때마다 트리에서 가 나타나는 횟수를 알고 싶다. 를 번째 변경 후의 출현 횟수라고 하자. 다음 값을 구하라.
입력
첫 줄에는 세 정수 , , 가 주어진다.
둘째 줄에는 길이가 인 배열 가 주어진다. 는 정점 의 부모이다.
셋째 줄에는 길이가 인 배열이 주어진다. 각 정점의 초기 값이다.
이어지는 개의 줄에는 각각 한 단계에서 트리에 가하는 변경을 나타내는 정수가 하나씩 주어진다.
출력
로 나눈 나머지인 정수 를 한 줄에 출력한다.
제한
힌트
각 변경 후의 답은 순서대로 이다.
아래 그림은 첫 번째 변경 후의 트리이다.
