#CF1994F. Stardew Valley

Stardew Valley

星露谷物语

时间限制:2 秒
空间限制:256 MB

鹈鹕镇由 nn 栋房屋和连接它们的 mm 条双向道路组成。某些道路上有 NPC 站在那里。农夫 Buba 需要走过每一条有 NPC 的道路,并与他们交谈。

请帮助农夫找到一条满足以下性质的路线:

  • 路线从某栋房屋开始,沿着道路行走,并在同一栋房屋结束。
  • 路线不会在任何一条道路上走超过一次(两个方向合起来算一次)。
  • 路线恰好经过每条有 NPC 的道路一次。

注意,路线可以经过没有 NPC 的道路,并且你不需要最小化路线的长度。

保证只沿着有 NPC 的道路就可以从任意一栋房屋到达任意另一栋房屋。

输入格式

每个测试包含多个测试用例。第一行包含一个整数 tt1t1041 \le t \le 10^4)—— 测试用例数。接下来是各个测试用例的描述。

每个测试用例的第一行包含两个整数 nnmm2n51052 \le n \le 5 \cdot 10^51m51051 \le m \le 5 \cdot 10^5)—— 鹈鹕镇的房屋数量和道路数量。

接下来的 mm 行,每行包含三个整数 u,v,cu, v, c1u,vn1 \le u, v \le nc=0c = 011)—— 道路的两端以及该道路上是否有 NPC。若 c=1c = 1,则该道路上有 NPC;若 c=0c = 0,则没有。

图中可能包含重边和自环。如果存在多条有 NPC 的道路,路线必须经过它们中的每一条。

保证只沿着有 NPC 的道路就可以从任意一栋房屋到达任意另一栋房屋。

保证所有测试用例的 nnmm 之和不超过 51055 \cdot 10^5

输出格式

对于每个测试用例,如果不存在解决方案,则输出 No(不含引号)。

否则,输出 Yes(不含引号),然后输出一个整数 kk —— 路线中包含的道路数量。接下来一行输出 k+1k+1 个整数 —— 路线依次经过的房屋编号。注意第一个房屋应与最后一个房屋相同,因为路线是环形的。

如果存在多个答案,输出任意一个即可。

你可以输出大写或小写字母(例如,字符串 yEsyesYesYES 都会被认为是肯定回答)。

样例输入

3
3 2
1 2 1
2 3 1
3 3
1 2 1
1 3 1
2 3 0
5 9
1 2 0
5 2 1
5 4 1
5 1 1
2 3 1
5 2 1
4 1 0
4 3 0
5 2 0

样例输出

NO
YES
3
1 2 3 1
YES
7
1 2 5 4 3 2 5 1

样例解释

注意在第三个测试用例中,存在多条连接 5522 的边。你必须走过其中的两条(有 NPC 的)