我们为全局变量 $v$ 定义“比较并交换”(Compare-and-Set)操作。该操作检查变量是否等于 $a$。如果相等,则将变量的值更改为 $b$ 且操作成功。否则,变量的值保持不变且操作失败。我们将该操作记为 $\text{CAS}(a, b)$。
假设给定了一个此类操作的列表 $\text{CAS}(a_1, b_1), \dots, \text{CAS}(a_n, b_n)$。此外,还给出了该变量的初始值 $c$,以及一个期望列表 $w_1, \dots, w_n$,其中 $w_i$ 表示你是否希望操作 $\text{CAS}(a_i, b_i)$ 成功。你的任务是确定一个操作的执行顺序,使得所有的期望都得到满足。
输入格式
第一行包含两个整数 $n$ 和 $c$($1 \le n \le 10^5$;$1 \le c \le 10^9$)—— 操作的数量和变量的初始值。
接下来的 $n$ 行,每行包含三个整数 $a_i, b_i, w_i$($1 \le a_i, b_i \le 10^9$;$0 \le w_i \le 1$),表示操作 $\text{CAS}(a_i, b_i)$。如果 $w_i = 1$,则你希望该操作成功;如果 $w_i = 0$,则你希望该操作失败。操作按输入顺序从 $1$ 到 $n$ 进行编号。
输出格式
如果不存在满足要求的操作顺序,输出单个单词 No。
否则,输出单词 Yes,随后输出 $n$ 个互不相同的整数 $p_1, p_2, \dots, p_n$($1 \le p_i \le n$),表示操作 $p_1$ 应当最先执行,然后是操作 $p_2$,依此类推。如果存在多种可能的顺序,输出其中任意一种即可。
样例
输入样例 1
4 1 1 2 0 1 2 1 2 3 1 3 4 0
输出样例 1
Yes 4 2 1 3
输入样例 2
3 1 1 2 1 1 2 1 1 2 0
输出样例 2
No