luogu#P4004. Hello world!

Hello world!

题目背景

不远的一年前,小 V 还是一名清华集训的选手,坐在机房里为他已如风中残烛的OI 生涯做最后的挣扎。而如今,他已成为了一名光荣的出题人。他感到非常激动,不禁感叹道: “Hello world!”。

题目描述

小 V 有 nn 道题,他的题都非常毒瘤,所以关爱选手的 ufozgg 打算削弱这些题。为了逃避削弱,小 V 把他的毒瘤题都藏到了一棵 nn 个节点的树里(节点编号从 11nn),这棵树上的所有节点与小 V 的所有题一一对应。小 V 的每一道题都有一个毒瘤值,节点 ii (表示标号为 ii 的树上节点,下同)对应的题的毒瘤值为 aia_i

魔法师小 V 为了保护他的题目,对这棵树施了魔法,这样一来,任何人想要一探这棵树的究竟,都必须在上面做跳跃操作。每一次跳跃操作包含一个起点 ss 、一个终点 tt 和一个步频 kk ,这表示跳跃者会从 ss 出发,在树上沿着简单路径多次跳跃到达 tt ,每次跳跃,如果从当前点到 tt 的最短路长度不超过 kk ,那么跳跃者就会直接跳到 tt ,否则跳跃者就会沿着最短路跳过恰好 kk 条边。

既然小 V 把题藏在了树里, ufozgg 就不能直接削弱题目了。他就必须在树上跳跃,边跳跃边削弱题目。 ufozgg 每次跳跃经过一个节点(包括起点 ss ,当 s=ts = t 的时候也是如此),就会把该节点上的题目的毒瘤值开根并向下取整:即如果他经过了节点 ii,他就会使 ai=aia_i = \lfloor \sqrt{a_i} \rfloor。这种操作我们称为削弱操作。

ufozgg 还会不时地希望知道他对题目的削弱程度。因此,他在一些跳跃操作中会放弃对题目的削弱,转而统计该次跳跃经过节点的题目毒瘤值总和。这种操作我们称为统计操作。

吃瓜群众绿绿对小 V 的毒瘤题和 ufozgg 的削弱计划常感兴趣。他现在想知道ufozgg 每次做统计操作时得到的结果。你能帮帮他吗?

输入格式

从文件 helloworld.in 中读入数据。

输入的第一行一个正整数 nn ,表示树的节点数。

接下来一行 nn 个用空格隔开的正整数 a1,a2,,ana_1, a_2, \ldots, a_n,依次描述每个节点上题目的毒瘤值。

接下来 n1n − 1 行,描述这棵树。每行 22 个正整数 u,vu, v ,描述一条树上的边 (u,v)(u, v) 。(保证 1u,vn1 \leq u, v \leq n ,保证这 n1n − 1 条边构成了一棵树)

接下来一行一个正整数 QQ ,表示 ufozgg 的操作总数。

接下来 QQ 行按 ufozgg 执行操作的先后顺序依次描述每个操作,每行 44 个用空格隔开的整数 op,s,t,kop, s, t, k ,表示 ufozgg 此次跳跃的起点为 ss ,终点为 tt ,步频为 kk 。如果 op=0op = 0 ,表示这是一次削弱操作;如果 op=1op = 1 ,表示这是一次统计操作。

输出格式

对于每个统计操作,输出一行一个整数,表示此次统计操作统计到的所有题的毒瘤值总和。

5
1 2 3 4 5
1 2
2 3
3 4
2 5
5
1 1 4 1
1 1 4 2
0 1 5 2
1 2 4 5
1 1 5 1
10
8 6 5

提示

对于 100%100\% 的数据,n50000n≤50000, Q400000Q≤400000, 1ai10131\leq ai\leq 10^{13}

对于所有的操作保证 0op10\leq op\leq 11s,t,kn1\leq s,t,k\leq n