时间限制:每个测试点 5 秒
内存限制:每个测试点 1024 MB
给定两个长度为 n 的数组 a 和 b,以及一个固定的整数 v。
如果一个区间 [l,r] 满足 (bl∣bl+1∣⋯∣br)≥v(其中 ∣ 表示按位或运算),则称其为 好区间。好区间的 优美值 定义为 max(al,al+1,…,ar)。
你会收到 q 个查询,分为两种类型:
1 i x:将 bi 赋值为 x;
2 l r:求所有满足 l≤l0≤r0≤r 的好区间 [l0,r0] 中,最小的优美值。如果不存在这样的好区间,输出 −1。
请处理所有查询。
输入格式
每个测试点包含多个测试用例。第一行包含测试用例的数量 t(1≤t≤105)。接下来是每个测试用例的描述。
每个测试用例的第一行包含两个整数 n 和 v(1≤n≤2⋅105,1≤v≤109)。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤109)。
第三行包含 n 个整数 b1,b2,…,bn(1≤bi≤109)。
第四行包含一个整数 q(1≤q≤2⋅105)。
接下来的 q 行,每行描述一个查询。每行的格式为以下两种之一:
1 i x(1≤i≤n,1≤x≤109);
2 l r(1≤l≤r≤n)。
保证所有测试用例的 n 之和以及 q 之和均不超过 2⋅105。
输出格式
对于每个测试用例,按顺序输出所有第二类查询的答案。
示例
输入
3
3 7
2 1 3
2 2 3
4
2 1 3
1 2 5
2 2 3
2 1 3
4 5
5 1 2 4
4 2 3 3
6
2 1 4
1 3 15
2 3 4
2 2 4
1 2 13
2 1 4
1 5
6
4
1
2 1 1
输出
-1 3 2
5 2 2 1
-1
说明
第一个测试用例:
a=[2,1,3], b=[2,2,3], v=7。
- 第一个查询(第二类):l=1, r=3。最大的区间是 [1,3],其按位或为 b1∣b2∣b3=3<7,因此不存在好区间。
- 第二个查询:将 b2 改为 5,此时 b=[2,5,3]。
- 第三个查询(第二类):l=2, r=3。可能的区间有 [2,2], [3,3], [2,3]。但 b2=5<7,b3=3<7,只有区间 [2,3] 是好区间:b2∣b3=7。答案为 max(a2,a3)=3。
- 第四个查询(第二类):l=1, r=3。存在三个好区间:[1,2], [2,3], [1,3],其优美值分别为 2, 3, 3,因此答案为 2。
第二个测试用例:
a=[5,1,2,4], b=[4,2,3,3], v=5。
- 第一个查询(第二类):l=1, r=4。好区间有 [1,2], [1,3], [1,4],优美值均为 5,答案为 5。
……(后续类似)