Type: Default 1000ms 256MiB

很版的模板题

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

Problem Description

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

  1. 在数组 A 的末尾添加一个数 x。
  2. 输出 ∑i=lrAi\sum_{i=l}^{r}A_i。
  3. 将数组 A 中的每个数 AiA_i 都改为 Ai⊕xA_i\oplus x。(⊕\oplus 表示异或操作)。
  4. 将数组 A从小到大排序。

Input Format

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

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

Output Format

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

Sample

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

Hint

1≤n,m≤105,0≤x,Ai≤1091\le n,m \le 10^5,0 \le x,A_i \le 10^9