编程题
### 问题描述
小齐的农场有 $N$ 个谷仓,分别编号为 $1$ 到 $N$。这些谷仓之间有 $N-1$ 条道路,每条道路连接两个谷仓,且可以通过一系列道路从任意一个谷仓到达其他任意一个谷仓。目前,第 $j$ 个谷仓有 $h_j$ 个干草堆($1 \leq h_j \leq 10^9$)。
为了取悦她的奶牛,小齐希望移动干草,使得每个谷仓最终都有相同数量的干草。她可以选择任意一对通过道路相连的谷仓,并命令农场工人将不超过第一个谷仓当前数量的干草从第一个谷仓移动到第二个谷仓。
请确定小齐可以发布的最少命令数量的顺序。保证存在一系列命令。
### 输入格式
第一行输入一个整数 $N$。
第二行输入 $N$ 个整数,表示每个谷仓的干草数量。
接下来的 $N-1$ 行输入每条道路连接的两个谷仓的编号 $u_i$ 和 $v_i$。
### 输出格式
输出一个整数,表示最少可能的命令数量,接着是该数量的命令序列,每行格式为三个用空格分隔的正整数:源谷仓,目标谷仓,从源谷仓移动到目标谷仓的干草数量。
### 样例输入
```
4
2 1 4 5
1 2
2 3
2 4
```
### 样例输出
```
3
3 2 1
4 2 2
2 1 1
```
### 评测数据规模
$ 0\leq N \leq 2 \times 10^5$。