题目描述
有 n 个人在公司里面工作。员工从 1 到 n 编号。每一个人属于一个部门。刚开始每一个人在自己的部门负责自己的项目,这样的话公司里面就有 n 个部门。
然而,公司内部出现了危机,需要合并一些部门,以提高工作效率。team(person) 表示 person 这个人所在的部门。有以下两种合并操作:
-
合并 team(x) 和 team(y)。x 和 y (1≤x,y≤n) 是员工编号。如果 team(x) 和 team(y) 是同一个部门,那么就不操作。
-
合并 team(x),team(x+1),...,team(y),x 和 y (1≤x≤y≤n) 是员工编号。
有一些查询操作,查询员工 x 和 y (1≤x,y≤n) 是否属于同一部门。
输入格式
第一行两个整数 n,q,1≤n≤200000,1≤q≤500000。
接下来 q 行,每行包含一次操作,格式为 type x y,如果 type=1 表示第一种合并操作,如果 type=2 表示第二种合并操作,如果 type=3 表示查询操作。
输出格式
对于每一个查询操作,在一行中输出 YES
或 NO
表示回答。
8 6
3 2 5
1 2 5
3 2 5
2 4 7
2 1 2
3 1 7
NO
YES
YES