Задача №115397. Пересменка в Сириусе

Участники образовательных программ иногда задумываются, почему между двумя программами обычно бывает перерыв в несколько дней. Ответ прост: сотрудникам Сириуса необходимо после очередной программы привести в порядок жилые номера.

На одном этаже в гостинице ОЦ «Сириус» находятся \(n\) номеров, пронумерованных от \(1\) до \(n\). После проведения образовательной программы все эти номера нуждаются в ремонте.

К ремонтным работам привлечены \(k\) сотрудников, пронумерованных от \(1\) до \(k\). За \(i\)-м сотрудником закреплён диапазон номеров с \(l_i\) по \(r_i\) включительно, а также зафиксирован номер \(m_i\) из этого диапазона, с которого он должен начать обход своих номеров. Диапазоны номеров у разных сотрудников могут пересекаться и даже совпадать.

Сотрудники в некотором порядке направляются с базы для выполнения работ. Следующий сотрудник направляется только после возвращения предыдущего на базу.

Когда \(i\)-го сотрудника направляют на выполнение работ, он сначала идёт в номер \(m_i\). Если этот номер всё ещё нуждается в ремонте, то сотрудник ремонтирует его, а также посещает все номера из диапазона с \(l_i\) по \(r_i\), за который он отвечает, и ремонтирует все нуждающиеся в ремонте номера из этого диапазона, после чего возвращается на базу. После этого все номера из диапазона с \(l_i\) по \(r_i\) более не нуждаются в ремонте.

Если же первый посещённый сотрудником номер \(m_i\) не нуждается в ремонте, поскольку его уже отремонтировали ранее направленные для выполнения работ коллеги, то сотрудник сразу возвращается на базу, надеясь, что коллеги уже отремонтировали и все остальные номера из его диапазона. В этом случае некоторые другие номера из диапазона с \(l_i\) по \(r_i\) всё еще могут нуждаться в ремонте.

Определите, можно ли при подобном подходе сотрудников к выполнению своих обязанностей направить их всех для выполнения работ в таком порядке, чтобы в итоге все номера от \(1\) до \(n\) оказались отремонтированы.

Входные данные

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число \(t\) (\(1 \leqslant t \leqslant 10^5\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит два целых числа \(n\) и \(k\) (\(1 \leqslant n, k \leqslant 5 \cdot 10^5\)) — количество номеров и количество сотрудников соответственно.

В каждой из последующих \(k\) строк содержится три целых числа \(l_i\), \(m_i\) и \(r_i\) (\(1 \leqslant l_i \leqslant m_i \leqslant r_i \leqslant n\)) — первый номер диапазона ответственности \(i\)-го сотрудника, номер из диапазона, с которого он должен начать обход своих, и последний номер из его диапазона, соответственно.

Гарантируется, что сумма \(n\) и \(k\) по всем наборам входных данных не превосходит \(5 \cdot 10^5\).

Выходные данные

Для каждого набора входных данных в отдельной строке выведите « YES », если можно отремонтировать все номера, и « NO » — в противном случае.

Система оценки

Обозначим за \(N\) сумму \(n\) по всем наборам входных данных, за \(K\) — сумму \(k\) по всем наборам входных данных.

Дополнительные ограничения
Подзадача Баллы \(n\), \(N\) \(k\), \(K\) дополнительно Необх. подзадачи
1 5 \(K \leqslant 10\,000\) \(m_i=l_i\)
2 5 \(N \leqslant 500\) \(k \leqslant 8\) У
3 2 \(n \leqslant 18\) \(K \leqslant 500\) У
4 12 \(n \leqslant 50\) \(K \leqslant 50\) У
5 9 \(n \leqslant 150\) \(K \leqslant 150\) У, 4
6 8 \(N \leqslant 500\) \(K \leqslant 500\) У
7 6 \(K \leqslant 10\,000\) За каждым сотрудником закреплен номер 1 или номер \(n\)
8 18 \(K \leqslant 10\,000\) Для каждого сотрудника найдется номер, который закреплён только за ним
9 3 Для каждого сотрудника найдется номер, который закреплён только за ним 8
10 4 \(K \leqslant 10\,000\) \(r_i-l_i=r_j-l_j\) для любых \(i\), \(j\)
11 4 \(K \leqslant 10\,000\) Любое \(m_i\) совпадает с \(l_i\) или \(r_i\) 1
12 4 \(n \leqslant 10\,000\) \(K \leqslant 10\,000\) У, 2–6
13 6 \(K \leqslant 10\,000\) У, 1–8, 10–12
14 14 У, 1–13

Примечание

В первом наборе входных данных из примера нужно сначала направить для выполнения ремонтных работ второго сотрудника, он отремонтирует номера с первого по третий. Затем первый сотрудник направится в номер 4. Так как он еще нуждается в ремонте, первый сотрудник отремонтирует оставшиеся номера в своем диапазоне. В результате все номера будут отремонтированы.

Во втором наборе данных выбрать подходящий порядок отправки сотрудников невозможно.

Примеры
Входные данные
2
5 2
3 4 5
1 3 3
5 3
1 2 4
2 4 5
3 3 3
Выходные данные
YES
NO
Сдать: для сдачи задач необходимо войти в систему