C1514 [Ynoi]2012-E

内存限制:256 MB 时间限制:10000 ms

题目描述

给你一棵边权为 $1$,且以 $1$ 为根的有根树,每个点有初始为 $0$ 的点权值,定义两个点的距离为其在树上构成的简单路径的长度,需要支持两种操作:

  1. 1 a x y z:把 $a$ 子树中所有与 $a$ 的距离模 $x$ 等于 $y$ 的节点权值加 $z$

  2. 2 a: 查询 $a$ 节点的权值

输入格式

本题采用多组数据。

第一行一个数 $t$ 表示数据组数。

每组数据中,第一行两个数 $n$ $m$ 表示树的节点数为 $n$,有 $m$ 次操作。

第二行 $n - 1$ 个数,第 $i$ 个数 $f_i$ 表示树上第 $i+1$ 个节点的父亲节点之后 $m$ 行,每行形如1 a x y z2 a,表示上述的操作。

输出

对于每个 $2$ 操作,输出一行一个数表示答案。

样例

样例输入 1

1 5 5 1 1 2 1 1 1 5 4 1 1 1 4 1 5 1 2 1 0 4 2 3 2 1

样例输出 1

5 0

提示

$t = 3n , m = 300000$

$1 \le f_i \le i$

$1 \le a \le n$

$1 \le x \le n$

$0 \le y < x$