有一个包含 $n$ 个节点的存储集群。每个文档在两个不同的节点上各存储一个副本。
困难时期即将来临,预算正在缩减。存储位变得非常昂贵,因此需要进行一些优化。我们已经确定了每个节点的最大容量,即该节点可以存储多少个副本。
由于现有的副本无法移动,我们决定从集群中删除一些文档以满足新的要求。我们希望充分利用集群,因此在清理后,每个节点存储的文档数量必须恰好等于其容量。
我们已知可以通过删除部分文档,使得每个节点都被完美利用。然而,找到具体要删除哪些文档非常困难。你能帮帮我们吗?
输入格式
输入的第一行包含两个整数 $n$ 和 $m$ ($1 \le n \le 500, 0 \le m \le n \cdot (n - 1)/2$),分别表示节点数量和文档集合的数量。
下一行包含 $n$ 个整数 $f_1, \dots, f_n$ ($0 \le f_i \le 10^9$),其中 $f_i$ 表示节点 $i$ 的容量。
接下来的 $m$ 行,每行包含三个整数 $u_i, v_i, c_i$ ($1 \le u_i, v_i \le n, u_i \neq v_i, 1 \le c_i \le 10^4$)。这表示有 $c_i$ 个文档在节点 $u_i$ 和 $v_i$ 上存有副本。
不同文档集合描述中的节点对均不相同。
输出格式
首先,输出一个整数 $k$:表示删除后仍存有共同副本的节点对数量。
然后输出 $k$ 行,每行包含三个整数,格式与输入相同:表示节点对以及存储在这些节点上的文档数量。
删除后,每对节点拥有的文档数量不能超过删除前的数量。此外,存储在第 $i$ 个节点上的文档总数必须等于 $f_i$。
保证答案存在。如果存在多个答案,输出其中任意一个即可。
样例
输入 1
5 6 3 1 1 1 2 1 2 1 1 4 1 2 3 2 2 4 1 3 4 1 1 5 3
输出 1
3 2 3 1 1 4 1 1 5 2