시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 (추가 시간 없음) 1024 MB (추가 메모리 없음)72832326544.389%

문제

서강 나라에서는 일직선 도로를 따라 $N$개의 버스 노선을 운영 중이다. 필요할 때마다 노선을 새로 만든 탓에 겹치거나 중복되는 노선이 많다. 복잡한 버스 노선에 지친 시민들을 위해 버스 노선을 개편하기로 했다.

각 버스 노선은 세 정수 $S$, $E$, $C$로 나타낼 수 있으며, 구간 $[S,E]$를 요금 $C$로 운행한다는 뜻이다. 어떤 두 버스 노선의 구간이 한 점 이상에서 겹친다면, 두 구간을 합친 새 노선으로 대체한다. 이때 요금은 더 낮은 금액의 요금을 따르기로 했다. 버스 노선 개편은 구간이 겹치는 버스 노선이 없을 때까지 진행한다.

그림 D.1: 개편 전과 개편 후의 버스 노선도

버스 노선들의 정보가 주어지면, 개편이 끝난 후 버스 노선의 정보를 출력하는 프로그램을 작성하자.

입력

첫 번째 줄에 버스 노선의 수 $N$이 주어진다. ($1 \le N \le 200\,000$)

두 번째 줄부터 $N$개의 줄에 각 버스 노선을 나타내는 세 정수 $S$, $E$, $C$가 주어진다. ($0 \le S \lt E \le 10^9$, $1 \le C \le 10^9$)

출력

첫 번째 줄에 개편이 끝난 후의 버스 노선의 수 $K$를 출력한다.

두 번째 줄부터 $K$개의 줄에 개편 후 각 버스 노선의 $S$, $E$, $C$를 $S$가 작은 순서대로 출력한다.

예제 입력 1

6
1 4 4
6 9 5
7 9 6
2 5 7
0 2 10
9 10 10

예제 출력 1

2
0 5 4
6 10 5

예제 입력 2

5
1 2 4
3 7 3
8 9 5
10 14 10
17 18 3

예제 출력 2

5
1 2 4
3 7 3
8 9 5
10 14 10
17 18 3