#517. 「LibreOJ β Round #2」计算几何瞎暴力

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: nzhtl1477

题目描述

有一个长度为 n 的数组 A 。下标从 1 开始标号。有 m 个操作需要处理,操作有如下四种:

  1. 在数组 A 的末尾添加一个数 x

  2. 输出 \sum_{i=l}^{r}A_i

  3. 将数组 A 中的每个数 A_i 都改为 A_i\oplus x 。( \oplus 表示异或操作)。

  4. 将数组 A 从小到大排序。

输入格式

第一行一个数 n 表示 A 的初始大小。
接下来一行 n 个非负整数 A_i ,表示 A 的中的每个元素。
接下来一行一个数 表示询问的数量。
接下来 m 行,每行表示一个操作:

  • 1 x: 表示第一种操作,在末尾插入数 x
  • 2 l r:表示第二种操作,询问 \sum_{i=l}^{r}A_i 。保证有 1\le l\le r\le n' ,其中 n' 为操作时刻序列的长度。
  • 3 x:表示第三种操作,给每个数 \oplus x
  • 4:表示第四种操作,将数组 A 排序。

输出格式

对于每个第二种操作,输出答案。

样例

样例输入

5
5 2 6 2 0
5
2 1 5
1 2
3 7
2 2 6
4

样例输出

15
23

数据范围与提示

1\le n,\,m\le 10^5, 0\le x,A_i\le 10^9