牛牛的数列
题号:NC214574
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

牛牛有一个数列,数列有个数,第个数记为同时。牛牛有两个数 ,

,现在牛牛想要问你几个问题,每个问题都对应一个区间

定义一个点 ( )

当i 时, 恒成立

注:如果有多个k满足上式,那么k取最靠左的那一个

定义一个数

区间除去点k的的异或和

= ...... (不会参加异或)

牛牛想要你输出 的最大值 ( )

。牛牛会问你次这样的问题

提示:题目描述中的变量区分大小写

输入描述:

第一行包含四个整数n,q,s,w。
接下来一行有n个数,a_i
接下来q行,每行两个整数 l r。

输出描述:

对于每次询问输出一行
示例1

输入

复制
5 2 3 4
6 9 8 16 7
1 5
2 4

输出

复制
4
5

说明

第一次询问是1-5,此时区间内与3异或出的值最大的数是16,除去16,这个区间异或和为0,0与1-4中的数异或能得到的最大的数是4.(0 xor 4 = 4)故输出4.
第二次询问是2-4,此时区间内与3异或出的值最大的数是16,除去16,这个区间异或和为1,1与1-4中的数异或能得到的最大的数是5.(1 xor 4 = 5)故输出5.

备注:

对于30%的数据:
对于%100%的数据: