编程题
### 问题描述
硕有一个由 $n$ 个节点组成的树。节点编号为 $1, 2, \ldots, n$。每个节点都有一个值。
他的任务是处理以下类型的查询:
1. 将节点 $s$ 的值更改为 $x$。
2. 找到节点 $a$ 和 $b$ 之间路径上的最大值。
### 输入格式
第一行输入两个整数 $n$ 和 $q$,表示节点数和查询数。节点编号为 $1, 2, \ldots, n$。
接下来一行有 $n$ 个整数 $v_1, v_2, \ldots, v_n$,表示每个节点的值。
然后有 $n-1$ 行描述边。每行包含两个整数 $a$ 和 $b$,表示节点 $a$ 和 $b$ 之间有一条边。
最后,有 $q$ 行描述查询。每个查询要么是 $1$ $s$ $x$ 的形式,要么是 $2$ $a$ $b$ 的形式。
### 输出格式
输出每个类型为 $2$ 的查询的答案,一行一个。
### 样例输入
```
5 3
2 4 1 3 3
1 2
1 3
2 4
2 5
2 3 5
1 2 2
2 3 5
```
### 样例输出
```
4 3
```
### 评测数据规模
$1 \leq n, q \leq 10^5$,$1 \leq a, b, s \leq n$,$1 \leq v_i, x \leq 10^9$。