#z004. ꒰ঌ( 🎀ᗜ`˰´ᗜ🌸 )໒꒱💈×

꒰ঌ( 🎀ᗜ`˰´ᗜ🌸 )໒꒱💈×

注意:本题仅限C++11,C++14,C++17(包括-O2在内)提交。

nn 个人正在发癫,已知有 mm 个它们可能对着发癫的 Vtuber 且每个人有两个推的 Vtuber ,保证这两位 Vtuber 不同且没有任意两个人推的两位 Vtuber 完全一致,这些人只有可能对着自己推的 Vtuber 发癫。

试问有没有可能每个人对着发癫的 Vtuber 各不相同,若有,请给出一种可能的情况。

输入方式

本题每个测试点有多组测试数据。

输入文件的第一行为一个正整数 TT 表示测试数据组数。

对于每组测试数据:

第一行两个数 n,mn,m 分别表示有多少个人发癫以及他们发癫可能涉及到的 Vtuber 总数。

接下来 nn 行每行两个正整数 x,yx,y,第 ii 行的这两个数分别记为 xi,yix_i,y_i,为第 ii 个人推的两位 Vtuber 的编号。

输出方式

对于每组测试数据:

若不存在任意一种可能性使每个人对着发癫的 Vtuber 各不相同,输出一行一个字符串 NO

否则,输出两行:

第一行为一个字符串 YES

第二行为 nn 个空格分隔的正整数表示一种可能性,第 ii 个数 aia_i 代表第 ii 个人此时对着编号为 aia_i 的 Vtuber 发癫。

本题使用 Special Judge,若有多种可能性,输出其中一种即可。

Samples

2
5 5
1 3
4 5
2 5
1 4
3 5
6 6
1 3
4 5
2 6
1 4
3 4
3 5
YES
1 5 2 4 3 
NO

数据范围

记一个测试点中全部的 TT 组测试数据的 nn 的总和为 n\sum nmm 的总和为 m\sum m

对于所有测试点,保证 1n106,2m106,T105,n,m2×1061 \le n\le 10^6,2 \le m\le 10^6,T\le 10^5,\sum n,\sum m \le 2\times 10 ^6i[1,n],xiyi,1xi,yim\forall i\in[1,n],x_i\ne y_i,1\le x_i,y_i\le mi,j[1,n]\forall i,j\in[1,n] ij i\ne j,记 ai=min{xi,yi},bi=max{xi,yi}a_i=\min\{x_i,y_i\},b_i=\max\{x_i,y_i\},其中 min{a,b}min\{a,b\}max{a,b}max\{a,b\} 分别为 {a,b}\{a,b\} 中的较小 // 较大者,有 aiaja_i\ne a_jbibjb_i\ne b_j 中的至少一条成立。

测试点编号 nn mm n\sum n m\sum m TT 特殊性质
11 10\le10 =1=1
22 8\le8 20\le20 =3=3
33 5×105\le5\times 10^5 5×105\le5\times10^5 105\le10^5
44 20\le20 2020 =1=1
55 200200 =10=10
66 500\le500 3000\le 3000 10\le 10 AA
77 =6= 6 BB
88 10\le 10
99 1500\le 1500 500\le 500
1010 5000\le5000 1.5×104\le 1.5\times 10^4 1.5×104\le 1.5 \times 10^4 104\le 10^4
1111 5×104\le5\times 10^4 5×104\le5\times 10^4 =1=1 AA
1212 106\le 10^6 5×104\le 5\times 10^4
131413-14 105\le10^5 5×105\le5\times 10^5
1515 106\le10^6 2×106\le2\times 10^6 =2= 2 BB
1616 105\le 10^5 AA
172017-20

特殊性质 AA:该测试点的全部测试数据均满足:每位 Vtuber 被最多 22 个人对着发癫。

特殊性质 BB:该测试点的全部测试数据均为随机生成。