Jocke 和他的朋友们经常在一起玩大富翁。在玩了无数局游戏后,他们对常规规则感到厌倦,于是对规则做了一些小改动。
首先,他们选择一个规模合适的国家。然后,他们观察该国的公路网,并选择一个由不同的城市 $v_1, v_2, \dots, v_k$ 组成的序列,这些城市构成一个环。这意味着对于所有 $1 \le i < k$,城市 $v_i$ 和 $v_{i+1}$ 之间有直接相连的公路,且 $v_k$ 和 $v_1$ 之间也有直接相连的公路,就像大富翁棋盘一样。然后,他们前往该国,通过开车绕着这个环行驶来买卖房产。
然而,有一个限制条件使得游戏难以进行:他们必须在公路网中找到一个合适的环。有些国家的公路网非常庞大。更困难的是,这个环必须包含偶数条公路,否则规则将无法运作(“免费停车”不会落在中间,这会导致游戏不平衡)。
给定该国所有的城市以及城市间的公路,请找出一个由偶数条公路组成的环(如果存在的话)。
图 1:三个样例中各国的示意图。
输入格式
第一行包含两个整数 $N$ ($1 \le N \le 10^5$) 和 $M$ ($0 \le M \le \min(2 \cdot 10^5, \frac{N(N-1)}{2})$),分别表示城市数量和公路网中的公路数量。
接下来 $M$ 行,每行包含两个整数 $a$ 和 $b$,表示该国城市 $a$ 和 $b$ 之间有一条公路 ($1 \le a \neq b \le N$)。保证该国任意两个城市之间不存在多条公路。
输出格式
如果不存在偶环,输出一行字符串 “NO”。
如果存在偶环,输出一行字符串 “YES”。然后,你需要输出这样一个环。首先,输出一行一个偶数 $k$ ($4 \le k \le N$),表示环中的城市数量。下一行输出 $k$ 个不同的整数 $v_1, v_2, \dots, v_k$ ($1 \le v_i \le N$),用空格分隔:即环中的城市。必须满足城市 $(v_1, v_2), (v_2, v_3), \dots, (v_{k-1}, v_k), (v_k, v_1)$ 之间存在公路。
如果存在多个可能的环,你可以输出其中任意一个。
子任务
你的解法将在多个测试组上进行测试。为了获得某一组的分数,必须通过该组中的所有测试用例。
| 子任务 | 分值 | 数据范围 |
|---|---|---|
| 1 | 18 | $N \le 10$ |
| 2 | 16 | $N \le 100$ 且 $M \le 200$ |
| 3 | 17 | 城市可以分为两部分,使得同一部分内的城市之间没有公路。 |
| 4 | 13 | 该国所有城市最多与 2 个城市有直接公路相连。 |
| 5 | 20 | 该国所有城市最多与 3 个城市有直接公路相连。 |
| 6 | 16 | 无额外限制。 |
样例
样例输入 1
4 5 1 2 1 3 2 3 3 4 4 1
样例输出 1
YES 4 3 2 1 4
样例输入 2
5 6 1 2 1 3 1 4 1 5 2 3 4 5
样例输出 2
NO
样例输入 3
7 6 1 7 3 4 4 5 5 6 6 3 5 2
样例输出 3
YES 4 6 3 4 5