躯树の墓守
题号:NC311924
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}小芳最近学会了最小生成树,现在她想要用几道题来检验自己。
\hspace{15pt}请你生成一个包含 n 个点,m 条边,对于每条边的边权 w_i 都有 w_i\in \left[ 1, m\right] 且边权互不相同的无向简单连通图^\texttt{[1]},它的最小生成树^\texttt{[2]}的边权之和恰好为 k。点的编号为 1n

【名词解释】
\hspace{15pt}简单连通图^\texttt{[1]}:指不包含自环(连接节点自身的边)和重边(两个节点之间存在多条边)、且任意两个顶点之间都存在路径相连的图。
\hspace{15pt}最小生成树^\texttt{[2]}:对于一张由 n 个节点构成的连通图,选出 n-1 条边将所有节点连通,且使得这 n-1 条边的权重之和最小,这样的结构称为最小生成树。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10^4\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入三个整数 n, m, k\left(1 \leqq n \leqq 2\times 10^5;\, n - 1 \leqq m \leqq \min\big(2\times 10^5, \tfrac{n\left(n-1\right)}{2} \big);\, 1 \leqq k \leqq 10^{9} \right)

\hspace{15pt}除此之外,保证单个测试文件的 n 之和、m 之和均不超过 2 \times 10^5

输出描述:

\hspace{15pt}对于每组测试数据,如果不存在符合要求的图,直接输出 \texttt{NO};否则:
\hspace{23pt}\bullet\,第一行输出 \texttt{YES}
\hspace{23pt}\bullet\,此后 m 行,第 i 行输出三个整数 u_i, v_i, w_i,表示第 i 条边连接点 u_i, v_i,边权为 w_i

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2
4 5 6
3 2 4

输出

复制
YES
1 2 1
2 3 2
3 4 3
3 1 4
4 2 5
NO