在节日期间,广告牌会在不同时刻被添加或移除。每个广告牌呈矩形,垂直于地面放置,且底边紧贴地面。
网络摄像头正在直播节日现场,显示舞台的二维图像。在该图像中,底边对应地面。每个广告牌覆盖图像中的一个矩形区域。一个广告牌由区间 $[A, B]$ 和高度 $H$ 描述,意味着它覆盖了图像中所有满足 $A \le x \le B$ 且 $0 \le y < H$ 的点 $(x, y)$。
注意,广告牌覆盖了矩形的底边和侧边,但不覆盖顶边。此外,代表不同广告牌的矩形可能会重叠。
在直播过程中,管理员会在不同时刻进行多次查询。每次查询指定一个区间 $[L, R]$,并询问在所有满足 $L \le x \le R$ 的未被覆盖的点 $(x, y)$ 中,高度 $y \ge 0$ 的最小值,其中 $x$ 和 $y$ 为实数。
你的任务是编写一个程序来处理 $N$ 个事件的序列:添加广告牌、移除广告牌,以及关于给定区间内最小未覆盖高度的查询。
作为示例,考虑以下按时间顺序给出的 $N = 7$ 个事件的序列(见下图):
- 添加区间为 $[A, B] = [2, 5]$、高度为 $H = 3$ 的广告牌。
- 添加区间为 $[A, B] = [4, 7]$、高度为 $H = 5$ 的广告牌。
- 进行查询 $[1, 10]$。该查询的答案为 $0$。区间内具有最小高度的未覆盖点,例如坐标为 $(1.5, 0)$ 的点。
- 进行查询 $[2, 7]$,答案为 $3$。
- 进行查询 $[4, 5]$,答案为 $5$。
- 移除第二个添加的广告牌。
- 进行查询 $[4, 5]$,答案为 $3$。注意,移除第二个添加的广告牌改变了查询 $[4, 5]$ 的答案。
输入格式
第一行包含一个整数 $N$ ($1 \le N \le 2 \cdot 10^5$),表示事件的数量。
接下来的 $N$ 行按时间顺序描述每个事件。行的内容取决于事件类型,如下所示:
- 添加广告牌:该行包含字符 “+” 和三个整数 $A, B, H$ ($1 \le A, B, H \le 10^9$ 且 $A < B$),表示添加一个广告牌,覆盖如题目所述的图像矩形。每个添加的广告牌被分配一个从 $1$ 开始的顺序整数标识符。
- 移除广告牌:该行包含字符 “-” 和一个整数 $I \ge 1$,表示移除标识符为 $I$ 的广告牌。保证 $I$ 标识的是一个已添加且尚未被移除的广告牌。
- 查询:该行包含字符 “?” 和两个整数 $L$ 和 $R$ ($1 \le L < R \le 10^9$),询问如题目所述在区间 $[L, R]$ 内的最小未覆盖高度。保证输入中至少包含一个查询。
输出格式
对于每个查询,输出一行,包含一个整数,表示对应区间内的最小未覆盖高度。
样例
样例输入 1
7 + 2 5 3 + 4 7 5 ? 1 10 ? 2 7 ? 4 5 - 2 ? 4 5
样例输出 1
0 3 5 3
样例输入 2
4 + 1 2 1 + 3 4 1 ? 1 2 ? 1 4
样例输出 2
1 0