萌萌的玫瑰
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
Special Judge, 64bit IO Format: %lld

题目描述

Rosemoe 有 n 朵萌萌的玫瑰,她们排成了一列。每朵玫瑰都有一个美丽贡献度。第 i 朵玫瑰拥有 a_i 的美丽贡献度。由于 Rosemoe 照顾不周,可能有些玫瑰枯萎了,她的美丽贡献度不是正数,而是零或负数。

Rosemoe 将几朵玫瑰的美丽值定义为这几朵玫瑰的美丽贡献度相或。形式化地来说,如果有 k 朵玫瑰,其中第 i 朵的美丽贡献度为 b_i , 那么这几朵玫瑰的美丽值为 b_1\lor b_2 \lor\dots\lor b_{k-1}\lor b_k (其中 \lor 表示按位或)。注意:本题中进行或运算时,均以C/C++中的64位有符号整数(long long)的或运算实现。负数的符号位总是 1 。特别地,我们认为 0 朵玫瑰的美丽值为 0

Rosemoe 突然有一个问题:如果她从这一列玫瑰中一个区间 [l,r] 中选取一些玫瑰(0 朵或更多),选出的这些玫瑰的美丽值的最大值是多少?

现在 Rosemoe 有 q 个询问,第 i 个询问的区间为 [l_i,r_i] ,对于每个询问,你需要求出上述问题的答案。各个询问是相互独立的。

输入描述:

第一行一个整数 n (1\le n \le 5 \times 10^5) ,表示玫瑰的数量。

第二行 n 个整数,第 i 个整数表示第 i 朵玫瑰的美丽贡献度 a_i(-2^{60} \le a_i \le 2^{60})

第三行一个整数 q (1\le q \le 5 \times 10^5),表示询问的数量。

接下来 q 行,第 i 行有两个整数,分别为 l_i,r_i 。数据保证 1 \le l_i, r_i \le n , 且 l_i \le r_i

输出描述:

输出 q 行,每行一个整数。第 i 行的整数表示第 i 个询问的答案。
示例1

输入

复制
10
1 1 -4 5 14 19 -19 8 1 0
5
1 10
1 4
2 8
3 3
6 10

输出

复制
31
5
31
0
27

说明

对于第二个询问,我们可以选择第 1,4 朵玫瑰,答案为 5 .

对于第四个询问,我们不从区间中选取玫瑰,答案为 0 .

对于第五个询问,我们可以选择第 6,8,9 朵玫瑰,答案为 27 .