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

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

요약
각 직원이 방 m_i에서 시작하고 그 방이 이미 수리됐으면 곧바로 돌아올 때, 모든 방을 수리하도록 직원 순서를 정할 수 있는지 판정한다.
난이도

어려움10점 중 8점

유형
그래프, 유니온 파인드, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

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

На одном этаже в гостинице ОЦ <<Сириус>> находятся nn номеров, пронумерованных от 11 до nn. После проведения образовательной программы все эти номера нуждаются в ремонте.

К ремонтным работам привлечены kk сотрудников, пронумерованных от 11 до kk. За ii-м сотрудником закреплён диапазон номеров с l_il\_i по r_ir\_i включительно, а также зафиксирован номер m_im\_i из этого диапазона, с которого он должен начать обход своих номеров. Диапазоны номеров у разных сотрудников могут пересекаться и даже совпадать.

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

Когда ii-го сотрудника направляют на выполнение работ, он сначала идёт в номер m_im\_i. Если этот номер всё ещё нуждается в ремонте, то сотрудник ремонтирует его, а также посещает все номера из диапазона с l_il\_i по r_ir\_i, за который он отвечает, и ремонтирует все нуждающиеся в ремонте номера из этого диапазона, после чего возвращается на базу. После этого все номера из диапазона с l_il\_i по r_ir\_i более не нуждаются в ремонте.

Если же первый посещённый сотрудником номер m_im\_i не нуждается в ремонте, поскольку его уже отремонтировали ранее направленные для выполнения работ коллеги, то сотрудник сразу возвращается на базу, надеясь, что коллеги уже отремонтировали и все остальные номера из его диапазона. В этом случае некоторые другие номера из диапазона с l_il\_i по r_ir\_i всё еще могут нуждаться в ремонте.

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

입력

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

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

В каждой из последующих kk строк содержится три целых числа l_il\_i, m_im\_i и r_ir\_i (1⩽l_i⩽m_i⩽r_i⩽n1 \leqslant l\_i \leqslant m\_i \leqslant r\_i \leqslant n) --- первый номер диапазона ответственности ii-го сотрудника, номер из диапазона, с которого он должен начать обход своих, и последний номер из его диапазона, соответственно.

Гарантируется, что сумма nn и kk по всем наборам входных данных не превосходит 5⋅1055 \cdot 10^5.

출력

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

힌트

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

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

예제1

  1. 예제 1

    입력
    2
    5 2
    3 4 5
    1 3 3
    5 3
    1 2 4
    2 4 5
    3 3 3
    
    예상 출력
    YES
    NO