#P1020. 很版的模板题

很版的模板题

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