嘿,看,那是什么?是龙之降临!
有 $n$ 条龙排成一行,编号从 $1$ 到 $n$。每条龙都有一个等级,初始时,所有龙的等级均为 $0$。
你是探险者联盟的英雄,你的任务是抵御邪恶联盟的进攻。
你在和平时期训练这些龙。当恶棍发动战斗时,你必须选择最强的龙进行防御。
具体来说,你需要按顺序处理 $q$ 个事件。每个事件属于以下类型之一:
训练:给定 $l, r, x$,对于所有编号在 $l$ 到 $r$ 之间(包含 $l$ 和 $r$)且等级为 $x$ 的龙,将其等级提升至 $x + 1$。
防御:给定 $l, r$,找出编号在 $l$ 到 $r$ 之间(包含 $l$ 和 $r$)的龙的最高等级。
输入格式
第一行包含两个整数 $n, q$ ($1 \le n, q \le 5 \times 10^5$),分别表示序列的长度和查询的数量。
接下来的 $q$ 行按顺序包含查询,每行一个。每行可能包含四个整数 $1, l, r, x$ ($1 \le l \le r \le n, 0 \le x \le 5 \times 10^5$),表示一个训练事件;或者包含三个整数 $2, l, r$ ($1 \le l \le r \le n$),表示一个防御事件。保证输入中至少包含一个防御事件。
输出格式
对于每个防御事件,输出一行结果。
样例
样例输入 1
5 5 1 3 5 0 1 1 4 1 1 1 5 2 2 2 2 2 4 5
样例输出 1
0 3