#icpc2015summerday2j. [icpc2015summer_day2_j]連結

[icpc2015summer_day2_j]連結

题目描述

给定一个由 NN 个顶点组成的图。每个顶点都有一个编号 1,2,...,N1,\\ 2,\\ ...,\\ N。第 ii (1leqileqN1\\leq i\\leq N) 个顶点具有非负整数权重 aia_i

初始时,图中没有边。你可以向图中添加无向边。候选边共有 MM 条。边的编号为 1,2,...,M1,\\ 2,\\ ...,\\ M。第 ii (1leqileqM1\\leq i\\leq M) 条边的端点为顶点 xix_iyiy_i,并且具有非负整数权重 ziz_i

你的目标是将所有顶点连接起来。为此,你可以任意次选择一条尚未添加到图中的边并将其添加到图中。但是,必须始终满足以下条件:

  • 对于图中的任何连通分量,(顶点权重总和)geq(边权重总和)(顶点权重总和)\\geq(边权重总和)

判断是否可以将所有顶点连接起来。如果可以,输出一种方法来添加边到图中。

约束条件

  • 2leqNleq1052\\leq N\\leq10^5
  • aia_i 是整数,0leqaileq1090\\leq a_i\\leq10^9
  • 1leqMleq1051\\leq M\\leq10^5
  • 1leqxi<yileqN1\\leq x_i<y_i\\leq N
  • ziz_i 是整数,0leqzileq1090\\leq z_i\\leq10^9

输入格式

输入是从标准输入读取的以下格式。

NN MM a1a_1 a2a_2 ...... aNa_N x1x_1 y1y_1 z1z_1 x2x_2 y2y_2 z2z_2 :: xMx_M yMy_M zMz_M

输出格式

如果无法将所有顶点连接起来,则只输出 -1

如果可以将所有顶点连接起来,则按照以下方式输出添加边到图中的方法。

  • 第一行输出添加到图中的边的数量 mm (1leqmleqM1\\leq m\\leq M)。
  • 接下来的 mm 行中,第 kk 行输出要添加的第 kk 条边的编号 iki_k (1leqikleqM1\\leq i_k\\leq M)。

示例 1


4 3
50 0 0 50
1 2 0
2 3 100
3 4 0

示例 1 输出


3
1
3
2

必须最后添加第 22 条边。


示例 2


2 3
50 50
1 2 100
1 2 101
1 2 102

示例 2 输出


1
1

包含重复边。


示例 3


3 1
50 50 50
1 2 100

示例 3 输出


-1

无法将所有顶点连接起来。