众所周知,二分只有两种, 和 。 可以在有序区间 内找到第一个大于等于 的元素的指针位置。 可以在有序区间 内找到第一个大于 的元素的指针位置。 于是我们可以推理出四个规则: 1. 最小的 使得 的指针为 。 2. 最小的 使得 的指针为 。 3. 最大的 使得 的指针为 。 4. 最大的 使得 的指针为 。 有时,得到的指针位置并不合法。 如果我们强行去访问指针所指向的内存,可能会触发 段错误 。 给定一个长度为 的有序数组 ,下标从 开始。 以及 次询问,每次询问给出操作数 ,一个左闭右开区间 和一个数字 。 只可能是 中的一种,需要你按照上述规则去找对应的 。 如果找不到,请输出 。
输入描述:
第一行有两个整数 和 。第二行有 个整数 ,保证有 。随后 行,每行有四个整数 , 和 。


输出描述:
输出 行,每行一个整数,代表对应的 值。如果找不到,输出 。
示例1

输入

5 5
1 2 3 4 5
1 0 2 3
1 0 5 3
2 0 5 3
3 0 5 3
4 0 5 3

输出

-1
3
4
2
3

说明

[0,2) 区间内的数字为 1,2 ,找不到 y 使得 3 \leq y
[0,5) 区间内的数字为 1,2,3,4,5 ,找到 y=3 使得 3 \leq y
[0,5) 区间内的数字为 1,2,3,4,5 ,找到 y=4 使得 3 \lt y
[0,5) 区间内的数字为 1,2,3,4,5 ,找到 y=2 使得 y \lt 3
[0,5) 区间内的数字为 1,2,3,4,5 ,找到 y=3 使得 y \leq 3
加载中...