만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

헬스장

시간 제한10초메모리 제한512 MB

요약
각 예약에 구간 안의 시간 하나를 배정합니다. 같은 시간에 기계가 두 번 쓰이지 않게 하면서 사람이 있는 시간의 수를 최소화합니다.
난이도

어려움10점 중 8점

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

문제

보아자르는 막 문을 연 헬스장의 주인이다. 시장 경쟁이 치열해서, 그는 사업의 모든 부분을 전문적으로 운영하고 고객에게 고급 예약 시스템을 제공하려 한다.

헬스장에는 서로 다른 운동 기구가 kk개 있다. 각 예약은 고객이 정한 시간 구간 안에서 기구 하나를 1시간 동안 사용하겠다는 신청이다. 시스템은 같은 기구가 같은 시각에 두 예약에 배정되지 않도록, 고객이 기구를 실제로 사용하는 정확한 시각을 정한다.

보아자르는 가까운 시간에 대한 nn개의 신청을 이미 모두 받았다. 어떤 시점에 아무도 헬스장에 없으면 조명을 끄고 에어컨을 끄고 보충제 바를 닫을 수 있다는 점을 그는 바르게 알아챘다. 비용을 줄이기 위해, 헬스장에 최소 한 명이 있는 시간의 합이 가장 작도록 운동 일정을 짜고 싶어 한다. 이 일을 도와라.

입력

첫 줄에 정수 nn과 kk가 주어진다 (1≤n≤1061 \le n \le 10^6, 1≤k≤1091 \le k \le 10^9). nn은 예약 신청의 수이고, kk는 헬스장 기구의 수이다. 기구는 1부터 kk까지 번호가 매겨져 있다. 간단히 하기 위해 시각도 1부터 시작하는 연속된 정수로 번호를 매긴다.

이어지는 nn개의 줄에 예약이 하나씩 주어진다. ii번째 줄에는 정수 aia_i, bib_i, pip_i가 주어진다 (1≤ai≤bi≤1091 \le a_i \le b_i \le 10^9, 1≤pi≤k1 \le p_i \le k). 이는 ii번째 고객이 시각 aia_i부터 bib_i까지(양 끝 포함) 구간에서 기구 pip_i를 1시간 사용하고 싶다는 뜻이다.

출력

모든 예약을 이행할 수 있고, 같은 기구를 두 사람이 같은 시각에 쓰지 않도록 일정을 짤 수 있다면 n+1n+1개의 줄을 출력한다. 첫 줄에는 헬스장에 최소 한 명이 있는 시각의 최소 개수를 쓴다. 이어지는 nn개의 줄 중 ii번째 줄에는 ii번째 예약에서 기구 pip_i를 사용하는 시각 tit_i를 쓴다. tit_i는 구간 [ai,bi][a_i, b_i]의 정수이다.

그렇지 않으면 NIE를 출력한다.

예제2

  1. 예제 1

    입력
    4 2
    1 3 1
    1 1 1
    1 3 2
    3 3 2
    
    예상 출력
    2
    3
    1
    1
    3
    
  2. 예제 2

    입력
    3 1
    1 2 1
    1 2 1
    1 2 1
    
    예상 출력
    NIE