Пересменка в Сириусе

시간 제한1초메모리 제한2048 MB

문제

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

На одном этаже в гостинице ОЦ <<Сириус>> находятся $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>> --- в противном случае.

힌트

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

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