#CF1909E. 多灯

多灯

E. 多重灯

每个测试的时间限制:3 秒
内存限制:256 兆字节

你有 nn 盏灯,编号从 11nn。初始时,所有灯都处于关闭状态。

你还有 nn 个按钮。第 ii 个按钮会切换所有编号是 ii 的倍数的灯的状态(即:如果灯是关的则打开,如果是开的则关闭)。

你需要根据以下规则按下一些按钮:

  • 你必须按下至少一个按钮。
  • 你不能重复按下同一个按钮。
  • 给定 mm(ui,vi)(u_i, v_i)。如果你按下了按钮 uiu_i,则你也必须按下按钮 viv_i(可以在任意时刻,不一定在按下 uiu_i 之后)。注意,如果你按下了按钮 viv_i,并不需要按下按钮 uiu_i

你希望不要浪费太多电。请找出一组按下的按钮,使得最终亮着的灯的数量不超过 n/5\lfloor n/5 \rfloor;如果不可能,输出 1-1


输入格式

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

  • 第一行包含两个整数 nnmm1n21051 \le n \le 2\cdot 10^50m21050 \le m \le 2\cdot 10^5)——灯的数量以及约束对的数量。
  • 接下来 mm 行,每行包含两个整数 ui,viu_i, v_i1ui,vin1 \le u_i, v_i \le nuiviu_i \neq v_i)。如果按下了按钮 uiu_i,则也必须按下按钮 viv_i。保证所有的 (ui,vi)(u_i, v_i) 互不相同。

保证所有测试用例的 nn 之和以及 mm 之和均不超过 21052\cdot 10^5


输出格式

对于每个测试用例:

  • 如果不存在任何按按钮的方案使得最终亮着的灯数不超过 n/5\lfloor n/5 \rfloor,则输出一行包含 1-1
  • 否则,输出两行:第一行包含一个整数 kk1kn1 \le k \le n)——按下的按钮数量;第二行包含 kk 个整数 b1,b2,,bkb_1, b_2, \dots, b_k1bin1 \le b_i \le n)——按下的按钮的编号(顺序任意)。这些 bib_i 必须互不相同,并且最终亮着的灯的数量不得超过 n/5\lfloor n/5 \rfloor

样例输入

4
4 0
5 2
4 1
5 1
15 9
7 8
8 9
9 10
10 9
11 1
12 2
13 3
14 4
15 5
5 4
1 2
2 3
3 4
4 5

样例输出

-1
4
3 5 1 2
3
8 9 10
1
5

样例解释

第一个测试用例:你需要使最终亮着的灯数不超过 4/5=0\lfloor 4/5 \rfloor = 0,即没有灯可以亮。可以证明,不存在任何至少按下一个按钮的方案使得最终亮着的灯数为 00

第二个测试用例:你可以按下按钮 3,5,1,23, 5, 1, 2

  • 初始所有灯关闭;
  • 按下按钮 33:切换编号为 33 的倍数的灯(即灯 33),所以灯 33 亮;
  • 按下按钮 55:切换编号为 55 的倍数的灯(即灯 55),所以灯 3355 亮;
  • 按下按钮 11:切换编号为 11 的倍数的灯(即灯 1,2,3,4,51,2,3,4,5),所以灯 1,2,41,2,4 亮;
  • 按下按钮 22:切换编号为 22 的倍数的灯(即灯 2,42,4),所以灯 11 亮。

该方案合法,因为:

  • 你至少按了一个按钮;
  • 每个按钮最多按一次;
  • 你按了按钮 u2=5u_2 = 5,则也必须按按钮 v2=1v_2 = 1,而按钮 11 确实被按了;
  • 最终只有灯 11 亮。

第三个测试用例:按下按钮 8,9,108, 9, 10 只会使灯 8,9,108, 9, 10 亮。