Traveling
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

请仔细阅读输出格式中的构造要求。

给定两个正整数 n, m,和一个 n 个数的序列
你需要构造一个有 n 个点 m 条边的无向连通图 G,使得对于每个 i,从 1 经过 i 到 n 的最短路长度 (可以重复经过边和点,可以出现先经过 n,再经过 i,再回到 n 的情况),或判断无解。
对于 G 的具体限制见输出格式。

输入描述:

第一行两个正整数 n,m
第二行 n 个整数 d_i

输出描述:

第一行输出 Yes 或 No(大小写敏感),表示能否构造出满足要求的图。
若你的输出为 Yes,接下来 m 行每行三个整数 u_i, v_i, w_i,表示你构造的图。
你的输出需要满足:

,若
G 应为连通图。
示例1

输入

复制
3 2
3 3 3

输出

复制
Yes
1 2 3
2 3 0

说明

注意到方案可能不止一种,你只需要输出其中一种。
示例2

输入

复制
4 4
4 4 4 2022

输出

复制
No

备注:

对于 100% 的数据,有