众所周知,小K有一个可耐的骨科限定妹妹,所以小K很擅长打表,但是本题与打表无关
小K加入了某客组织,在这里他学会了种妹妹的方法,通过这种方式,小K可以获得更多的妹妹。
小K很希望可以获得更多的妹妹来关照,所以小K种下了一棵妹妹树,善于观察的他发现了每个妹妹都有一个可爱度……
由于小K的精力有限,他只能照顾可爱度大于某个值的妹妹。
他想知道某个子树中可爱度大于x的妹妹个数。
某个妹妹的可爱度可能发生变化……
树上可能会出现一只新的妹妹……
0 u x 询问以u为根的子妹妹树中,可爱度严格大于x的妹妹的个数。
1 u x 把第u个妹妹的可爱度改成x。
2 u x 添加一个编号为"当前树中妹妹数+1"的妹妹,其父节点为u,其可爱度为x。
3 u 删除妹妹u与其父节点之间的路径。此时u的父节点变成叶子节点,u变成分裂出的树的根。
输入第一行包括一个正整数n(1<=n<=100000),代表树上的初始妹妹数。
接下来n-1行,每行2个整数u,v,为树上的一条无向边。
任何时刻,树上的任何妹妹的可爱度大于等于0,且两两不同。
接下来1行,包括n个整数wi,表示初始时每个妹妹的可爱度。
接下来1行,包括1个整数m(1<=m<=100000),表示操作总数。
接下来m行,每行最开始包括一个整数op,
若op=3,该行还会有一个整数u;
若op不等于3,该行还会有两个整数u,x;
对每个op=0,输出一行,包括一个整数,表示某个子树中可爱度大于x的妹妹个数。
op,u,x的数据范围不会超过int范围。
保证题目涉及的所有数在int内。