#abc256d. [abc256_d]Union of Interval

[abc256_d]Union of Interval

题目描述

对于实数 LLRR,我们用 \[L,R)\[L,R) 表示大于等于 LL 且小于 RR 的实数的集合。这样的集合称为右半开区间。

给定 NN 个右半开区间 \[Li,Ri)\[L_i,R_i)。令 SS 表示它们的并集。将 SS 表示为最少数量的右半开区间的并集。

约束条件

  • 1N2×1051 \leq N \leq 2\times 10^5
  • 1Li<Ri2×1051 \leq L_i < R_i \leq 2\times 10^5
  • 输入中的所有值都是整数。

输入

输入以以下格式从标准输入给出:

NN L1L_1 R1R_1 \vdots LNL_N RNR_N

输出

kk 为表示 SS 的最少数量的右半开区间。按照 XiX_i 升序打印包含 kk 个右半开区间的 kk 行,如下所示:

X1X_1 Y1Y_1 \vdots XkX_k YkY_k


示例输入1

3
10 20
20 30
40 50

示例输出1

10 30
40 50

三个右半开区间 \[10,20),\[20,30),\[40,50)\[10,20),\[20,30),\[40,50) 的并集等于两个右半开区间 \[10,30),\[40,50)\[10,30),\[40,50)


示例输入2

3
10 40
30 60
20 50

示例输出2

10 60

三个右半开区间 \[10,40),\[30,60),\[20,50)\[10,40),\[30,60),\[20,50) 的并集等于一个右半开区间 \[10,60)\[10,60)