石老板魂飞魄散
时间限制:C/C++/Rust/Pascal 4秒,其他语言8秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

由于上题做的太慢,石老板没有得到及时的抢救,现在他的魂来找你复仇了......

给定一棵  个节点的树,第  个点有点权 

定义一个点  所在的极大同色连通块为一个极大的点集 ,满足 ,且对任意点集中的元素 ,可以找到一个节点序列 ,满足 ,且对任意  为  中的整数,满足  与  在树上相邻,且 ,且 

有  次操作:

1 x y:给出一个点  ,将其所在的极大同色连通块中每个点的点权修改为 

2 x:给出一个点 ,查询其所在的极大同色连通块的大小

输入描述:

第一行两个数 

第二行  个数,第  个数表示树上第  的节点的父亲节点的编号,保证父亲节点的编号比该节点小。

第三行  个数,第  个数表示 

之后  行,每行形如 1 x y 或 2 x,意义如上述。

输出描述:

对每个  操作,输出一行一个数表示答案。
示例1

输入

复制
4 5
1 1 2
3 1 1 1
2 4
1 1 1
1 4 3
2 4
1 3 3

输出

复制
2
4

备注:


大样例链接: https://pan.baidu.com/s/1uR8keXNeZmYLN46rMZ0Mfg  密码: a3tl
ex_test2.in/ex_test2.ans 对应下面  数据的部分。

ex_test3.in/ex_test3.ans 对应下面  数据的部分。

对于前  的数据,保证 

对于前  的数据,保证 

对于另外  的数据,保证 

对于的数据,满足