VMware和基站
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

水平海岸线修建了n个基站(你可以认为海岸线是一条线段)。海岸线可以分成n个区域,他们按1到n标号,第i个基站修建在第i块区域。这里我们假设第i个基站与第j个基站的距离为|i-j|。
由于项目早期的不合理安排,每个设备的型号都不一样,一开始,第i个基站的设备型号为i。现在VMware接管了这个项目,并需要解决一系列问题。

输入描述:

第一行包含两个整数,代表基站数和操作数
接下来q行每行包含以下三种询问中的一种:
1. cover l r t :一个修理工将第l到第r个基站之间的所有基站替换为型号为t的基站
2. replace x y:VMware说服生产者将所有型号为x的基站替换为型号为y的基站
3. find i r x:对于一个当前位于区域i的客户,回答距离i不超过r的型号为x的基站与基站i的最远距离。如果在允许范围内,不存在这样一个基站,输出-1

输出描述:

对于每个询问3,输出答案
示例1

输入

复制
5 5
find 5 2 3
find 2 3 2
replace 1 1
cover 3 5 2
find 1 3 2

输出

复制
2
0
3