今年是市政选举年。尽管该国领导人二十年来从未更迭,但选举始终是透明且公正的。
共有 $n$ 名候选人,编号从 $1$ 到 $n$,争夺执政权。选举采用一种变体的排序投票系统。在选票中,每位选民将所有 $n$ 名候选人按从最偏好到最不偏好的顺序进行排名。也就是说,每一张选票都是 $\{1, 2, \dots, n\}$ 的一个排列,其中排列的第一个元素对应最偏好的候选人。
如果候选人 $a$ 在超过半数的选票中比候选人 $b$ 更受偏好,我们就称候选人 $a$ 击败了候选人 $b$。
由于选举是公平透明的,国家电视台在选举实际开始前就已经宣布了 $m$ 个事实,第 $i$ 个事实为“候选人 $a_i$ 击败了候选人 $b_i$”!
你负责选举委员会的工作并统计选票。你需要提供一份选票列表,使得选举结果与电视台宣布的结果一致,或者确定这不可能实现。不过,强烈建议你找到一个解决方案,否则你可能会惹恼上级。
输入格式
第一行包含整数 $n$ 和 $m$ ($2 \le n \le 50$, $1 \le m \le \frac{n(n-1)}{2}$),分别表示候选人数和已知选举结果的配对数。
接下来的 $m$ 行中,第 $i$ 行包含两个整数 $a_i$ 和 $b_i$ ($1 \le a_i, b_i \le n, a_i \neq b_i$),表示候选人 $a_i$ 击败了候选人 $b_i$。
每个无序对 $\{a_i, b_i\}$ 最多出现一次。
输出格式
如果存在符合电视台宣布事实的选票列表,请输出 YES。否则,输出 NO。
如果存在有效的选票列表,请在接下来的行中输出其中一种方案。
首先输出选票总数 $k$ ($1 \le k \le 50\,000$)。可以证明,如果存在有效的选票列表,则一定存在一个不超过 $50\,000$ 张选票的方案。
然后输出 $k$ 行。其中第 $i$ 行包含 $\{1, 2, \dots, n\}$ 的一个排列,描述第 $i$ 张选票。排列中的第一个数字是最偏好的候选人,最后一个数字是最不偏好的候选人。
对于 $1 \le i \le m$,在 $k$ 个排列中,$a_i$ 必须在超过 $k/2$ 个排列中出现在 $b_i$ 之前。对于未出现在选举要求列表中的候选人对 $\{a, b\}$,其结果可以是任意的,包括 $a$ 和 $b$ 互不击败对方的情况。
样例
样例输入 1
2 1 1 2
样例输出 1
YES 1 1 2
样例输入 2
3 3 1 2 2 3 3 1
样例输出 2
YES 3 1 2 3 2 3 1 3 1 2
说明
观察可知,候选人 1 击败了候选人 2,因为在三张选票中,候选人 1 有两次排在候选人 2 前面,这超过了总票数的一半。同理,候选人 2 击败了候选人 3,候选人 3 击败了候选人 1。