DVDs
Магазины по прокату DVD постепенно исчезают из-за популярности онлайн-видеостриминга. Однако недавно вышел очень популярный сериал, и владельцы магазинов надеются, что он привлечет больше клиентов. Этот сериал состоит из n DVD-дисков, пронумерованных от 0 до N-1.
Вы управляете магазином проката и у вас есть специальная полка для этого сериала. На этой полке N ячеек, также пронумерованных от 0 до N-1. Когда вы впервые получаете этот сериал, вы размещаете DVD номер i в ячейку номер i. Клиент, который является фанатом сериала, захочет взять последовательность DVD-дисков, пронумерованных от l до r. Зная, что у вас есть полка для этого сериала, клиент просто возьмет все DVD-диски из ячеек l до r, не проверяя фактический индекс DVD-дисков.
Однако есть один странный клиент, который приходит в ваш магазин только для того, чтобы поменять местами два DVD-диска в ячейках. Этот клиент берет DVD из ячейки a и меняет его с DVD в ячейке b. Это создает множество проблем для обычных клиентов, так как они не проверяют индексы DVD-дисков. Этот странный клиент приходит в ваш магазин довольно часто, и у вас нет времени, чтобы его прогнать.
Ваша задача — написать программу, которая будет отслеживать действия в магазине и определять, получает ли арендующий клиент действительно те DVD-диски, которые он хочет, то есть получает ли клиент DVD-диски, пронумерованные от l до r. Например, если клиент приходит, чтобы взять DVD-диски из ячеек 2 до 4, и в ячейках 2, 3 и 4 находятся DVD-диски, пронумерованные 4, 2 и 3 соответственно, мы скажем, что клиент получает то, что он хочет.
Для простоты предположим, что когда клиент арендует DVD-диски, он сразу же смотрит их все и возвращает на те же места, откуда они были взяты. Другими словами, аренда DVD-дисков никак не влияет на их расположение.
Входные данные
Первая строка ввода содержит количество тестов T ≤ 20. Первая строка каждого теста содержит два целых числа N и K (1 ≤ N ≤ 100000, 1 ≤ K ≤ 50000), которые указывают количество DVD-дисков и количество действий в магазине соответственно. Следующие K строк описывают действия в магазине в порядке их выполнения. Каждая строка содержит три целых числа q, a и b (q либо 0, либо 1, и 0 ≤ a ≤ b < N). Если q равно 0, это означает, что странный клиент меняет местами DVD-диски в ячейках номер a и b. Если q равно 1, происходит аренда: обычный клиент, которому нужны DVD-диски, пронумерованные от a до b, берет DVD-диски из ячеек a до b. Как отмечалось ранее, этот клиент сразу же использует DVD-диски и возвращает их на те же места (это действие не изменяет расположение DVD-дисков).
Выходные данные
Для каждого действия аренды выведите строку со словом "YES", если клиент получает то, что он хочет, то есть когда в ячейках a до b находятся DVD-диски, пронумерованные от a до b, и выведите слово "NO" в любом другом случае.