并查集
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

n 个元素 1,2,\dots,n,一开始第 i 个元素处于第 i 个集合。

你需要执行总计 m 次操作,每次操作是以下两种当中的一种:

\bullet \ 1 \ l \ r:把 l 所在的集合与 r 所在的集合合并。

\bullet \ 2 \ l \ r:询问元素 l,l+1,\dots,r 是否全都属于同一集合。

输入描述:

第一行包含两个整数 n,m \ (1 \leq n,m \leq 10^6)

接下来 m 行,每行包含三个整数 op,l,r \ (1 \leq op \leq 2,1 \leq l \leq r \leq n)

输出描述:

对于每次询问,输出 "YES" 或者 "NO"。
示例1

输入

复制
6 5
1 1 3
1 2 4
2 1 4
1 1 2
2 1 4

输出

复制
NO
YES