Data Structure

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

문제

Andy is a famous data structure expert at Nanjing University second to none. One day he throws a plain dry data structure problem to his friends, but none of them can solve. How about you?

Given a tree rooted at node 1. Each node has a weight which is 0 initially. Define the distance between two nodes as the number of edges in the unique simple path between the two nodes. You need to perform these two types of operations:

  • Type 1: given a,x,y,za, x, y, z, add zz to the weights of all aa's descendants (including aa itself) whose distances to aa are yy modulo xx;
  • Type 2: given aa, return the weight of node aa.

입력

The first line of the input is a single integer TT (1T4)(1 \leq T \leq 4), the number of test cases.

Each test cases starts with two integers n,mn, m (1n,m300000)(1 \leq n, m \leq 300000), denoting that there are nn nodes (numbered 11 through nn) in the tree and you need to perform mm operations. The next line contains n1n-1 integers, f_1,f_2,,f_n1f\_1, f\_2, \cdots, f\_{n-1} (1f_ii)(1 \leq f\_i \leq i), specifying the edges of the trees; the iith integer denotes the parent of node i+1i+1. The next mm lines describe the operations. Each line is either 1 a x y z (1an,1xn,0y<x,0z500)(1 \leq a \leq n, 1 \leq x \leq n, 0 \leq y < x, 0 \leq z \leq 500), denoting an operation of type 1, or 2 a (1an)(1 \leq a \leq n), denoting an operation of type 2.

출력

For each operation of type 2 in each test case, print the answer in one line.